numpy 在Python中,有没有一种方法可以将数组用作索引?

yfwxisqw  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(114)

我正在尝试加快代码的速度,现在我有一个"for"循环来对数组中的数字求和。它的设置如下:

a1=np.zeros(5)
a2=[1,2,3,4,5,6,7,8,9,10]

我想做的是将a2[:5] + a2[5:]的值相加,得到

a1=[7,9,11,13,15]

我做了一个循环

for ii in range(2):
    a1+=a2[5*ii:5*(ii+1)]

然而,这需要很长的时间。有人知道如何解决这个问题或如何重组我的代码吗?
我想做的是:

i=np.range(2)
a1+=a2[5*i:5*(i+1)]

但是不能,因为你不能在Python中使用数组作为索引,这是除了循环之外我唯一的想法。
编辑:这里的2只是一个例子,在我的代码中,我计划让它这样做50 - 100次。

pzfprimi

pzfprimi1#

看起来您想将列表的前半部分添加到后半部分。这可以通过将一维列表重新调整为二维数组(2x5)并沿着水平轴求和来完成。

np.array(a2).reshape(2,5).sum(axis=0)
# array([ 7,  9, 11, 13, 15])
rhfm7lfc

rhfm7lfc2#

这取决于您真正想要实现的目标。但np.roll函数可能会获得您所期望的速度:

a2 = np.array([1,2,3,4,5,6,7,8,9,10])
a1 = a2[:5] + np.roll(a2, -5)[:5]

相关问题