首页 > 解决方案 > 对两个不同形状的numpy数组进行操作

问题描述

假设我有 2 个 numpy 数组,如下所示:

init = 100
a = np.append(init, np.zeros(5))
b = np.random.randn(5)

所以 a 的形状为 (6,),b 的形状为 (5,)。我想将它们相加(或执行一些其他操作,例如求幂)以获得形状为 (6,) 的新 numpy 数组,其 a (100) 的第一个值相同,其余值相加(在此在这种情况下,这看起来就像将 100 附加到 b,但那是因为它是一个用零初始化的玩具示例。尝试按原样添加,将产生:

a+b

ValueError: 操作数无法与形状 (6,) (5,) 一起广播

是否有一种使用广播的单线方式,或者这里的 newaxis 来欺骗 numpy 将它们视为兼容的形状?

所需的输出:

数组([ 100. , 1.93947328, 0.12075821, 1.65319123, -0.29222052, -1.04465838])

标签: pythonarraysnumpy

解决方案


你的意思是你想做这样的事情

np.append(a[0:1], a[1:,] + b)

你想要你想要的输出是什么?我提供的答案执行此广播添加,不包括第 1 行a


推荐阅读