对两个不同形状的Numpy数组进行操作

时间:2018-10-06 01:25:34

标签: python arrays numpy

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

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

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

a+b

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

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

所需的输出:

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

2 个答案:

答案 0 :(得分:0)

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

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

您希望您的期望输出是什么?我提供的答案执行此广播添加操作,不包括a

中的第1行

答案 1 :(得分:0)

不是一条直线,而是两条短线:

c = a.copy()
c[1:] += b