2

2 つの配列があり、それぞれが 2 つの整数 (int1,int2) のペアで構成されています。各配列のペアの最初の値に対してのみ合計を計算し、2 番目の値に (たとえば) 乗算を適用したいと考えています。明らかに、このコードを書くと:

tab1=np.array([(1,2),(1,5),(0,6)])
tab2=np.array([(0,7),(1,4),(0,2)])
tab3=tab1+tab2
tab4=tab1*tb2

tab3 の結果は tab3=array([[1, 9],[2, 9],[0, 8]]) になります

金額は第 2 部でも適用されました。しかし、私は (1+0),(1+1),(0+0) を取得したいので: tab3=array([1,2,0])

配列でループを実行せずにこの結果を得ることは可能ですか?

4

2 に答える 2

1

インデックスを作成して、適切な要素を取得できます。

>>> tab1 = np.array([(1,2),(1,5),(0,6)])
>>> tab2 = np.array([(0,7),(1,4),(0,2)])
>>> tab1
array([[1, 2],
       [1, 5],
       [0, 6]])
>>> tab1[:,0]
array([1, 1, 0])
>>> tab1[:,1]
array([2, 5, 6])

したがって

>>> tab3 = tab1[:,0] + tab2[:,0]
>>> tab4 = tab1[:,1] * tab2[:,1]
>>> tab3
array([1, 2, 0])
>>> tab4
array([14, 20, 12])
于 2013-01-11T18:02:51.903 に答える
0
#Calculates the adding and the multiplication
t=map((lambda x,y:(x[0]+y[0],x[1]*y[1])) , tab1,tab2)
#Splits the result
tab3,tab4 = zip(*t)

map を使用する場合、ループは暗黙的ですが、内部マジックとして発生することに注意してください。

于 2013-01-11T18:22:02.363 に答える