2017-11-13 8 views
0

私はこのような配列のマージしようとしています:とValueError:オペランドは形状(5)と一緒に放送することができませんでした(30)

をする場合:

a = [1.2, 1, 3, 4] 
b = [0.0 , 0.0] 
c = [0.0 , 0.0] 
a = a + b + c 

すると結果は次のようになります。

[0.0 , 0.0 , 1.2 , 1 ,3 ,4 , 0.0 ,0.0] 

これは、配列 のヒストグラムを抽出し、それを通常の配列とマージすることです。この

ValueError: operands could not be broadcast together with shapes (5,) (30,)

のようなエラーが私を助けてください原因

x1, bins, patch = plt.hist(array1, bins = round(max(array1) - min(array1))) 
x1 = b + x1 + c 

but the form of x1 is 
x1 = [ 2. 0. 0. 1. 0. 2. 5. 0. 1. 1. 0. 1. 5.] 

、多分。 私は何をすべきかわかりません

+1

たとえば、a = b + a + cですか? – BenT

答えて

0

np.concatenateを使ってこれを行うことができますが、あなたの配列をリストに変換することもできます。だから、コードのtryで

import numpy as np 

a = list(np.array([1.2, 1, 3, 4])) 
b = list(np.array([0.0 , 0.0])) 
c = list(np.array([0.0 , 0.0])) 
D= a + b + c 

x1 = list(b) + list(x1) + list(c) 

#Put it back into a numpy array 
x1 = np.array(x1) 
0

numpyのアレイは+オペレータと異なる振る舞い:Pythonのリストと、一緒にリストを追加すると、(あなたが望んでいる)連結を意味します。

しかし、NumPyでは、配列を一緒に追加することは、要素ごとの追加を意味します(次元が一致しない場合は、最初にbroadcasting)。

希望するものを入手するには、np.concatenateを使用してください。

import numpy as np 
np.concatenate((b,x1,c)) 
関連する問題