python - 代码的左侧如何为计数和 bin_edges 赋值?谁能简要解释一下这段代码
问题描述
我想知道如何bin_edges
一次分配计数和值np.histogram
。
counts,bin_edges=np.histogram(iris_setosa['sepal_length'],bins=10,density=True)
解决方案
假设data
是一个一维 numpy 数组并且bins
是一个严格的正整数,代码大致如下:
import numpy as np
def numpy_histogram(data, bins=10, density=False):
xmin = data.min()
xmax = data.max()
bin_edges = np.linspace(xmin, xmax, bins + 1)
counts = np.zeros(bins, dtype=int)
bin_indices = ((data - xmin) / (xmax - xmin) * bins * 0.999999).astype(int)
for i in bin_indices:
counts[i] += 1
if density:
counts = counts / sum(counts) / (bin_edges[1] - bin_edges[0])
return counts, bin_edges
counts, bin_edges = numpy_histogram(np.random.uniform(1, 10, 20), density=True)
print(sum(counts), counts)
因此,数据的最小值和最大值用于定义 bin 边界。(边界比垃圾箱多一个)。然后从每个数据xmin
中减去值,然后除以数据的总范围。然后乘以箱数。这标识了该值应该去的 bin 的索引。需要通过一个略小于 1 的因子进行校正,因此最右边的值不会落在下面的(未定义的)bin 中。
当 时density=True
,计数被归一化,使得所有条形的面积之和为 1。条形的宽度有两个连续的差值bin_edges
。
PS:关于Python的多个元素同时赋值,这个问题很有意思。
推荐阅读
- android - android-架构组件在android上什么也不返回
- php - 在 Drupal 8 中更改节点主体
- android - Android 房间列表或可变列表返回类型
- key-value - 如何在 etcd v3 中使用 ls?
- react-native - 在本机反应中禁用 TextInput 的剪贴板
- pyspark - 使用 pyspark 读取复杂的 json 模式
- uml - 如何在 UML 对象图中对不同类之间的属性依赖关系进行建模?
- python - 如何从 Python 中的对象方法惯用地打开多个托管资源
- json - 如何使用 cURL 将多个 JSON 文件发布到服务器
- javascript - Fabric UI 组件未在 IE 中显示