Python 如何从另一个数组中减去数组中的每个元素?
我有两个大小不同的Numpy数组A(nx1)和B(m1)。我想从A的所有元素中减去B的每个元素。因此,结果矩阵C(m x n)的元素应计算为Python 如何从另一个数组中减去数组中的每个元素?,python,numpy,Python,Numpy,我有两个大小不同的Numpy数组A(nx1)和B(m1)。我想从A的所有元素中减去B的每个元素。因此,结果矩阵C(m x n)的元素应计算为C(I,j)=A(I)-B(j)。使用Numpy是否有任何直接循环较少的计算?如果使用列表理解,您可以比直接循环更高效一些: import numpy as np a = np.array([10, 20, 30, 40]) b = np.array([1, 2]) c = np.array([a - b[j] for j in range(len(b
C(I,j)=A(I)-B(j)
。使用Numpy是否有任何直接循环较少的计算?如果使用列表理解,您可以比直接循环更高效一些:
import numpy as np
a = np.array([10, 20, 30, 40])
b = np.array([1, 2])
c = np.array([a - b[j] for j in range(len(b))])
print(c)
输出:
[[ 9 19 29 39]
[ 8 18 28 38]]
您可以使用
A = np.array([1,2,3,4,5])
B = np.array([5,4,2,7])
a, b= np.meshgrid(A,B)
print(a - b)
#output:-
array([[-4, -3, -2, -1, 0],
[-3, -2, -1, 0, 1],
[-1, 0, 1, 2, 3],
[-6, -5, -4, -3, -2]])
第二种方法:
C = A - np.array([B]).T
print(C)
#output:-
array([[-4, -3, -2, -1, 0],
[-3, -2, -1, 0, 1],
[-1, 0, 1, 2, 3],
[-6, -5, -4, -3, -2]])
广播:
A = np.array([1,2,3,4,5])
B = np.array([5,4,2,7])
A - B[:, np.newaxis]
输出:
array([[-4, -3, -2, -1, 0],
[-3, -2, -1, 0, 1],
[-1, 0, 1, 2, 3],
[-6, -5, -4, -3, -2]])
你看过
numpy.subtract
?为什么它不能是一个循环的可能重复?@JakeP numpy.subtract没有帮助。请注意数组的大小不一样,我想从B的每个元素中减去A;不是OP想要的,它仍然是一个循环