numpy 更快的列表操作

rvpgvaaj  于 2022-11-29  发布在  其他
关注(0)|答案(2)|浏览(125)

我有一个很大的numpy数组whNumPylements,我想分别与其他索引相乘,然后求和。我目前的代码相对较慢,有人知道我如何才能使它更快吗:

result = 0
n = 1
int_array = np.array((3,16,3,29,36))
for i in int_array:
    result += int(i) * n
    n *= 10
shyt4zoc

shyt4zoc1#

在每次迭代10 * prev(10 * ...)的时候,你可以用10 ^ [0, 1, 2, ...] = [1, 10, 100, ...]和numpy,array & numpy.power,然后你需要[1*int_arr[0], 10*int_arr[1], ...],最后,你需要numpy.sum()

res = (np.power(10, np.arange(int_array.shape[0])) * int_array).sum()

print(res)

输出量:

389463
cld4siwp

cld4siwp2#

我想我已经明白了,你想把数组中的每个数字都乘以n,而n在每个循环中都要乘以10。这就是你想做的吗?我想没有什么可做的。唯一的问题是你不需要把i转换成int,因为i已经是1了。

相关问题