gpt4 book ai didi

python - numpy 从二维数组中减去/添加一维数组

转载 作者:太空狗 更新时间:2023-10-29 16:53:40 27 4
gpt4 key购买 nike

我有以下二维数组:

a = array([[ 1,  2,  3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12],
[13, 14, 15]])

和另一个一维数组:

b = array([ 1,  2,  3,  4,  5])

然后我想计算类似的东西

c = a - b

为了得到:

c = array([[0, 1,  2],
[2, 3, 4],
[4, 5, 6],
[6, 7, 8],
[8, 9, 10]])

但我收到错误消息:

Traceback (most recent call last):
Python Shell, prompt 79, line 1
ValueError: operands could not be broadcast together with shapes (5,3) (5,)

我阅读了广播规则,但并没有变得更聪明。我可以使用 for 循环或类似方法来解决问题,但应该有直接的方法。谢谢

最佳答案

您需要将数组 b 转换为 (2, 1) 形状 数组,在索引元组中使用 None 或 numpy.newaxis。这是 Indexing of Numpy array .

你可以这样做:

import numpy

a = numpy.array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12],
[13, 14, 15]])

b = numpy.array([ 1, 2, 3, 4, 5])
c=a - b[:,None]
print c

输出:

Out[2]: 
array([[ 0, 1, 2],
[ 2, 3, 4],
[ 4, 5, 6],
[ 6, 7, 8],
[ 8, 9, 10]])

关于python - numpy 从二维数组中减去/添加一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303348/

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