python - 加法和乘法的联合累加

标签 python numpy

我有一个数组:

a = np.array([1, 2, 3, 1, 3, 4, 2, 4])

我想做以下计算:

out = 0
for e in a:
    out *= 3
    out += e

out 作为输出(给定示例为 4582),是否有一种很好的矢量化方法?我觉得可以用einsum,但是我不知道怎么写。

最佳答案

一种方法:

import numpy as np

a = np.array([1, 2, 3, 1, 3, 4, 2, 4])
powers = np.multiply.accumulate(np.repeat(3, len(a) - 1))
res = np.sum(powers[::-1] * a[:-1]) + a[-1]
print(res)

输出

4582

如果展开循环,您会注意到您将 a 的每个值乘以 3 的幂,然后对结果求和。

关于python - 加法和乘法的联合累加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70303569/

相关文章:

python - 删除 numpy 中高度相关的列(没有 pandas)

python - 空数组的 Numpy 数组 ndmin 行为

python - fit_generator 中的 Keras steps_per_epoch 是如何工作的

python - 使用 difflib SequenceMatcher 比率在 Pandas 中合并

python - 如何重启twisted和deluge客户端rpc的reactor

python - 在 Python 中获取 numpy/scipy 中的日志比率

python - 如何在python中将numpy数组成员的值写入txt?

python - PYODBC ProgrammingError : ('42000' , “[42000] [Microsoft][Pilote ODBC Microsoft Access]

python - 附加到数组的 Numpy 重复数组?!这里的语法是什么?

python - 将两个一维数组连接成一个二维数组,并在Python中重新洗牌后再次将其打破