繁体   English   中英

如何从 Numpy 中的二维数组行中减去一维数组

[英]How to subtract 1d array from 2d array's rows in Numpy

我想要做的是从其他二维数组的行中减去一维数组。 我发现,在某些情况下,结果是错误的,这让我很困惑。 下面的代码按我的意愿运行良好。

lst1 = [[10,11,12,13,14], [20,21,22,23,24], [30,31,32,33,34]]
lstave = [10,20,30,40,50]
# lstave = [0.1,0.2,0.3,0.4,0.5]  # <- This is also no problem.
# transform them to nparray.
arr1 = np.array(lst1).reshape(3,5)
arrave = np.array(lstave)


for i in range(len(lst1)):
    print(arr1[i] - arrave)
    # print(np.subtract(arr1[i], arrave))   # <- This is also work

然后我得到了预期的关注。

[  0  -9 -18 -27 -36]
[ 10   1  -8 -17 -26]
[ 20  11   2  -7 -16]

但是,当我将数组“lstave”更改为[1, 2, 3, 4, 5]并减去时,

lst1 = [[10,11,12,13,14], [20,21,22,23,24], [30,31,32,33,34]]
lstave = [1,2,3,4,5]
arr1 = np.array(lst1).reshape(3,5)
arrave = np.array(lstave)

for i in range(len(lst1)):
    print(arr1[i] - arrave)

我得到了关注。

[9 9 9 9 9]
[19 19 19 19 19]
[29 29 29 29 29]

我不明白为什么只有第一个元素减法执行了 5 次。 我觉得广播工作方式不对,但我不知道如何解决这个问题。 有人可以帮我吗? 谢谢你,

它确实有效,只是:

10 - 1

给出:

9

但:

11 - 2

还给出:

9

这更像是一道数学题。

[10 - 1, 11 - 2, 12 - 3, 13 - 4, 14 - 5]

会给:

[9, 9, 9, 9, 9]

所以你的代码有效。

如果你让arrave成为:

[0, 1, 2, 3, 4]

所有最终值都是10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM