从B的所有元素中减去数组A的所有元素?

时间:2016-01-12 19:24:01

标签: python math numpy matrix subtraction

我正在寻找从阵列B的所有元素中减去数组A的所有元素的最快方法。我知道如何做的唯一方法是:

a = np.array([1,2,3])
b = np.array([1,2,3])
new = []
for i in a:
    new.append(b - a[i])

理想情况下,我希望最终得到一个符合new

的矩阵[0,1,2;-1,0,1;-2,-1,0]

我还想将此类操作扩展到Pandas timedelta系列。例如,我可以这样做:

a=np.array([1,2,3])
b=np.array([1,2,3])
aT = pd.to_timedelta(a,'D')
bT = pd.to_timedelta(b,'D')
new = []

for i in aT:
    x.append(bT - i)

并以此结束:

[TimedeltaIndex(['0 days', '1 days', '2 days'], dtype='timedelta64[ns]', freq='D'), TimedeltaIndex(['-1 days', '0 days', '1 days'], dtype='timedelta64[ns]', freq='D'), TimedeltaIndex(['-2 days', '-1 days', '0 days'], dtype='timedelta64[ns]', freq='D')]

但对于非常大的数组来说这是非常慢的。

1 个答案:

答案 0 :(得分:3)

String扩展为包含np.newaxis/None的二维数组案例,然后让broadcasting为快速矢量化解决方案发挥作用,就像这样 -

b

示例运行 -

a - b[:,None]