関数の一部として、入力ベクトル/行列の各列の平均値を含むベクトル/行列(入力に応じて)を生成するコードを記述しています。バツ'。これらの値は、入力ベクトルと同じ形状のベクトル/行列に格納されます。ベクトルと行列を扱う関数を書くには
それは1-Dおよびマトリックスアレイの両方で動作させるために私の予備的な解決策は非常にある厄介な(!):
MATLABの背景から来る# 'x' is of type array and can be a vector or matrix.
import scipy as sp
shp = sp.shape(x)
x_mean = sp.array(sp.zeros(sp.shape(x)))
try: # if input is a matrix
shp_range = range(shp[1])
for d in shp_range:
x_mean[:,d] = sp.mean(x[:,d])*sp.ones(sp.shape(z))
except IndexError: # error occurs if the input is a vector
z = sp.zeros((shp[0],))
x_mean = sp.mean(x)*sp.ones(sp.shape(z))
、これはMATLABでどのように見えるかです:
[R,C] = size(x);
for d = 1:C,
xmean(:,d) = zeros(R,1) + mean(x(:,d));
end
これは、誤差のないベクトルと行列の両方で機能します。
私の質問は、(醜い)try/exceptブロックを使わずにベクトルと行列の両方の入力にPythonコードを作用させるにはどうすればいいですか?
ありがとうございます!
可能デュープ: http://stackoverflow.com/q/8287047/48837 –
公正であるために、matlabには1D配列はありませんl。 matlab _is_ 2Dの "1D"ベクトル。 –
2D/1D出力をノルムの計算のようなものに使うつもりならば、2D出力は必要なく、あらゆる場合に1Dアレイを放送で取り除くことができます。 – cyborg