python - 将 numpy 数组中的线性序列转换为等比级数序列

标签 python arrays numpy logarithm

这是所有真正聪明的高级 Python 用户的问题。我的输入是 Python numpy 数组中的一系列数字。它们是以线性序列排列的浮点值。我需要创建一个新的几何序列,其中:

  • 新的第一个值=原来的第一个值

  • 新的第二个值=原始值二和三的和

  • 新的第三个值=原始值四到七的和

  • 新的第四个值=八到十五的值之和

我当然可以通过遍历数据来完成此操作,但我需要尽快完成此处理 - 数组很大。最快的方法是什么?

例子:

12.0, 3.4, 9.2, 7.7, 4.9, 3.8, 6.9

应该变成:

12.0, 12.6, 23.3

最佳答案

您可以使用 np.add.reduceatint.bit_length

例子:

# make example sequence
a = np.arange(100.0)

# form sums
np.add.reduceat(a,(1<<np.arange(a.size.bit_length()))-1)
# array([   0.,    3.,   18.,   84.,  360., 1488., 2997.])

这会添加项目 0; 1+2; 3+4+5+6;等等,你的例子表明的是你真正想要的。

关于python - 将 numpy 数组中的线性序列转换为等比级数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58781070/

相关文章:

c++ - 无法计算数组平均值

java - 这段代码中的字节数组大小是多少?我可以让它更通用吗?

python - 我想将标签 numpy 数组转换为二进制矩阵?

python - Numpy 数组元素除法 (1/x)

Python: 'unicode' 对象没有属性 'append'

python - 包含多个 JSON 文档的文件中的 JSONDecodeError "Expecting property name enclosed in double quotes"

c - 动态字符串数组不起作用

python - 在 scipy 中使用大 F 阶矩阵进行 dgemm 段错误

python - 文本数据存储方式不同

python - 多个 Try-Excepts 后跟 Python 中的 Else