我有一个很大的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
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()。
10 * prev(10 * ...)
10 ^ [0, 1, 2, ...] = [1, 10, 100, ...]
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
cld4siwp2#
我想我已经明白了,你想把数组中的每个数字都乘以n,而n在每个循环中都要乘以10。这就是你想做的吗?我想没有什么可做的。唯一的问题是你不需要把i转换成int,因为i已经是1了。
n
i
2条答案
按热度按时间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()
。输出量:
cld4siwp2#
我想我已经明白了,你想把数组中的每个数字都乘以
n
,而n
在每个循环中都要乘以10。这就是你想做的吗?我想没有什么可做的。唯一的问题是你不需要把i
转换成int,因为i
已经是1了。