2017-05-10 14 views
-1

1x1行列に8x8行列を乗算したい。明らかに、私はあなたがこれら2つの形の行列を乗算できないことを知っています。私の質問は、スカラーで8x8行列を乗算するのと等価になるように、1x1行列から値を "抽出"する方法です。言い換えれば、1x1行列をスカラーに変換する方法はありますか? nは私の1x1の行列であり、fluxは私の8×8行列である1要素行列で掛け算する

ここに私のコードは、これまでのところです:

n=0 
for i in range(delta_E.shape[0]): 
    n+= 100/(210*(Sig_f_cell[i])*flux[i]*delta_E[i]*(1.6022e-13)*V_core) 

flux = (np.linalg.inv(L))*G 

目標:N

の値によってフラックスを乗算するが、nがAであることが表示されますスカラーが、私はそれらを掛けたときに、私はこのエラーを取得:

ValueError        Traceback (most recent call last) 
<ipython-input-26-0df98fb5a138> in <module>() 
----> 1 Design_Data (1.34,.037,90) 

<ipython-input-25-5ef77d3433bc> in Design_Data(pitch, Pu_fraction,  FE_length) 
201  print('Number of fuel elements : ',N_FE) 
202 
--> 203  return n*flux 
204 

C:\Users\Katey\Anaconda3\lib\site-packages\numpy\matrixlib\defmatrix.py in __mul__(self, other) 
341   if isinstance(other, (N.ndarray, list, tuple)) : 
342    # This promotes 1-D vectors to row vectors 
--> 343    return N.dot(self, asmatrix(other)) 
344   if isscalar(other) or not hasattr(other, '__rmul__') : 
345    return N.dot(self, other) 

ValueError: shapes (1,1) and (8,1) not aligned: 1 (dim 1) != 8 (dim 0) 

私もちょうどn[0]*fluxを乗じ試してみましたが、私は、SAMを取得eエラー。

+1

「n」はスカラーであり、マトリックスではないように見えます。あなたはそれがマトリックスだと思うのですか? – Divakar

+0

@Divakar私がそれらを掛け合わせると、それは私にこれを与える – Katey

+0

@Divakar(上を参照してください) – Katey

答えて

2

numpy.multiply機能を使用できます。 1x1配列と8x8配列が与えられると、この関数は8x8配列の各要素を1x1配列の要素で倍数にします。私があなたの質問を正しく理解していれば、これはあなたが探しているものです。ここではドキュメント

>>> x1 = np.arange(9.0).reshape((3, 3)) 
>>> x2 = np.arange(3.0) 
>>> np.multiply(x1, x2) 
    array([[ 0., 1., 4.], 
      [ 0., 4., 10.], 
      [ 0., 7., 16.]]) 

からの使用例は、あなたがここにhttps://docs.scipy.org/doc/numpy/reference/generated/numpy.multiply.htmlこの機能のためのドキュメントを見つけることができます。

+0

はい、ありがとうございました。まさに私が探していたものです! – Katey