gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:00 25 4
gpt4 key购买 nike

我正在寻找从数组 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')]

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

最佳答案

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

a - b[:,None]

sample 运行-

In [19]: a
Out[19]: array([1, 2, 3])

In [20]: b
Out[20]: array([1, 2, 3])

In [21]: a - b[:,None]
Out[21]:
array([[ 0, 1, 2],
[-1, 0, 1],
[-2, -1, 0]])

关于python - 从 B 的所有元素中减去数组 A 的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com