这是所有真正聪明的高级 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.reduceat
和 int.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/