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

2024-05-15 21:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同大小的Numpy数组A(nx1)和B(mx1)。我想从A的所有元素中减去B的每个元素,因此结果矩阵C(mxn)的元素应该计算为c(i,j) = A(i)-B(j)。有没有使用Numpy的直接无循环计算?在


Tags: numpy元素矩阵数组mxnnx1mx1
3条回答

如果使用列表理解,则可以比直接循环更高效:

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)

输出:

^{pr2}$

广播:

A = np.array([1,2,3,4,5])
B = np.array([5,4,2,7])
A - B[:, np.newaxis]

输出:

^{pr2}$

您可以使用np.meshgrid

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

第二个方法:在

^{pr2}$

相关问题 更多 >