python - 如何简单地为 numpy 直方图设置替代不等式条件?
问题描述
根据numpy 文档中的示例,
>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
查看1
,我们注意到在第二个 bin 中有两次出现,这意味着这些 bin 被视为 range left <= x_i < right
。假设有人想这样切换left < x_i <= right
。有没有一种简单的方法可以在 numpy 中做到这一点?
解决方案
np.histogram()
用于np.searchsorted(..., side='right')
计算每个样本值的 bin 编号。所以你可以这样做:
import numpy as np
data = [1, 2, 1]
bins = [0, 1, 2, 3]
hist = np.zeros(len(bins) - 1, dtype=int)
bin_numbers = np.searchsorted(bins, data, side='left')
for idx, val in zip(*np.unique(bin_numbers, return_counts=True)):
hist[idx - 1] = val
result = hist, bins
result
是:
(array([2, 1, 0]), [0, 1, 2, 3])
推荐阅读
- ios - UICollectionViewCell 大小以适应设备旋转上的所有单元格
- python - 从 python str1[0 : -1 : 2] 中的 str1 变量打印时这意味着什么以及它是如何工作的
- angularjs - 如何在angularjs的视图部分将字符串转换为JSON数据
- java - 列表视图在第一次滚动时加载相同的数据两次,之后工作正常
- sql - “Google Sheet”,比较两列并返回值
- maven - 如何在没有 web.xml 的情况下使用 maven 制作最简单的 HelloWorld servlet
- jquery - JSON 按值排序 jQuery 或 JS
- visual-studio-code - 在 vscode 中,您如何判断 TextDocumentContentProvider 提供的文档是否显示或显示在何处
- ace-editor - 无法配置片段
- android - showSoftInputFromInputMethod 已弃用 Android P API 28