Python - 在二进制 numpy 数组中找到一维质心的最佳方法

标签 python arrays numpy binary boolean

假设我有以下 Numpy 数组,其中只有一个连续的 1 切片:

import numpy as np
x = np.array([0,0,0,0,1,1,1,0,0,0], dtype=1)

我想找到 1 元素的一维质心的索引。我可以输入以下内容:

idx = np.where( x )[0]
idx_center_of_mass = int(0.5*(idx.max() + idx.min()))
# this would give 5

(当然,当 1 切片的元素数量为偶数时,这会导致粗略的近似。) 有没有更好的方法来做到这一点,比如计算效率更高的 oneliner?

最佳答案

您不能简单地执行以下操作吗?

center_of_mass = (x*np.arange(len(x))).sum()/x.sum() # 5

%timeit center_of_mass = (x*arange(len(x))).sum()/x.sum()
# 100000 loops, best of 3: 10.4 µs per loop

关于Python - 在二进制 numpy 数组中找到一维质心的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719140/

相关文章:

python - 全部与全部点积

python - 如何过滤数据框以便在特定时间每天发生一次

python - 多个列表和大小的所有可能排列

javascript - 根据数组中的元素更新对象

arrays - 在两个排序数组中查找共同元素

python - 偏导数线性回归的随机梯度下降

python - Django 应用程序消耗服务器中的内存

python - 您如何顺序处理可能引发错误的多行代码?

javascript - 查找数组的所有*唯一组合*

python - 用较短的数组替换部分 numpy 1D 数组