gpt4 book ai didi

python - 将 numpy 差异广播到三维

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

设置

import numpy as np

A = np.array([[1, 2], [2, 3]])
B = np.array([[1, 1], [2, 2], [4, 3]])

A

array([[1, 2],
[2, 3]])

B

array([[1, 1],
[2, 2],
[4, 3]])

我需要取 A 的第一行与 B 的每一行的差异。如果我这样做:

A - B[0]

array([[0, 1],
[1, 2]])

我只需要为 B 的每一行添加这个。

非矢量化方法是:

np.array([A - B[i] for i in range(B.shape[0])])

array([[[ 0, 1],
[ 1, 2]],

[[-1, 0],
[ 0, 1]],

[[-3, -1],
[-2, 0]]])

问题

获得相同 3 维数组的矢量化方法是什么?如果这样更容易,我可以使用 pandas。

最佳答案

最简单的方法是为 B 数组添加一个维度,以便 numpy 正确广播它:

In [15]: A - B[:, np.newaxis]
Out[15]:
array([[[ 0, 1],
[ 1, 2]],

[[-1, 0],
[ 0, 1]],

[[-3, -1],
[-2, 0]]])

关于python - 将 numpy 差异广播到三维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241130/

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