Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从另一个数组中减去数组中的每个元素?_Python_Numpy - Fatal编程技术网

Python 如何从另一个数组中减去数组中的每个元素?

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

我有两个大小不同的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))])
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想要的,它仍然是一个循环