[英]Numpy subtraction from two arrays
我有两个像下面那样的numpy数组
a=np.array([11,12])
b=np.array([9])
#a-b should be [2,12]
我想减去a和b,结果应该[2,12]。 我怎样才能达到这个效果?
您可以对其中一个阵列进行零填充。
import numpy as np
n = max(len(a), len(b))
a_pad = np.pad(a, (0, n - len(a)), 'constant')
b_pad = np.pad(b, (0, n - len(b)), 'constant')
ans = a_pad - b_pad
这里np.pad
的第二个参数是(#of left pads, #of right pads)
一个类似的方法来@BlownhitherMa,是创建元素为零的数组的大小a
(我们可以称之为c
),再放入b
的值在适当情况下:
c = np.zeros_like(a)
c[np.indices(b.shape)] = b
>>> c
array([9, 0])
>>> a-c
array([ 2, 12])
您可以使用itertools中的zip_longest :
import numpy as np
from itertools import zip_longest
a = np.array([11, 12])
b = np.array([9])
result = np.array([ai - bi for ai, bi in zip_longest(a, b, fillvalue=0)])
print(result)
产量
[ 2 12]
这是一个很长的解决方案。
diff =[]
n = min(len(a), len(b))
for i in range (n):
diff.append(a[i] - b[i])
if len(a) > n:
for i in range(n,len(a)):
diff.append(a[i])
elif len(b) > n:
for i in range(n,len(b)):
diff.append(b[i])
diff=np.array(diff)
print(diff)
我们可以通过复制a
然后在原地减去b
来避免不必要的填充/临时值:
# let numpy determine appropriate dtype
dtp = (a[:0]-b[:0]).dtype
# copy a
d = a.astype(dtp)
# subtract b
d[:b.size] -= b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.