[英]Python and numpy : subtracting line by line a 2-dim array from a 1-dim array
在python中,我希望逐行从1-dim数组中减去2-dim数组。
我知道如何用'for'循环和索引来做,但我想它可能更快使用numpy函数。 但是我没有办法做到这一点。 这是一个带有'for'循环的示例:
from numpy import *
x=array([[1,2,3,4,5],[6,7,8,9,10]])
y=array([20,10])
j=array([0, 1])
a=zeros([2,5])
for i in j :
... a[i]=y[i]-x[i]
这里有一个不起作用的例子,用这个代替'for'循环:
a=y[j]-x[j,i]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
你有什么建议?
问题是yx
具有各自的形状(2) (2,5)
。 要进行适当的广播,你需要形状(2,1) (2,5)
。 只要保留元素的数量,我们就可以使用.reshape
执行此操作:
y.reshape(2,1) - x
得到:
array([[19, 18, 17, 16, 15],
[ 4, 3, 2, 1, 0]])
y[:,newaxis] - x
也应该工作。 (小)比较的好处是你要注意尺寸本身,而不是尺寸的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.