2

我有两个数组,每个数组都由一对两个整数(int1,int2)组成。我只想计算每个数组对的第一个值的总和,并且我想对第二个值应用乘法(例如)。显然,如果我写这段代码:

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]])

这笔款项也适用于第二部分。但我想获得 (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 回答