为啥 binned_statistic_2d 现在抛出 TypeError?

Posted

技术标签:

【中文标题】为啥 binned_statistic_2d 现在抛出 TypeError?【英文标题】:Why is binned_statistic_2d now throwing TypeError?为什么 binned_statistic_2d 现在抛出 TypeError? 【发布时间】:2020-06-22 17:18:13 【问题描述】:

我一直在使用 scipy 的 binned_statistic_2d 函数绘制一些数据的二维直方图,特别是通过设置 expand_binnumbers = True 返回数据所在 bin 的索引列表。它运行良好,直到今天。以下代码演示了我的问题:

import numpy as np
from scipy.stats import binned_statistic_2d as hist 

# my data is two arrays of numbers 
x = np.random.random((5,))
y = np.random.random((5,))

# I need to know which bin the values are in so I return the bin_idx
data = hist(x,y, bins = [2,2], statistic = 'count', values = None, expand_binnumbers = True)

bin_idx = data[3]

TypeError: 输入类型不支持 ufunc 'isfinite',并且根据强制转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型

任何想法为什么这会突然停止工作?

【问题讨论】:

values 参数是必需的。没有它,这个函数就没有多大意义。 @WarrenWeckesser scipy 文档告诉我,如果 count 是我的统计数据,则不使用值:docs.scipy.org/doc/scipy/reference/generated/...'count':计算其中的点数每个垃圾箱。这与未加权直方图相同。未引用值数组。我应该用什么代替它? 啊,你是对的。它看起来像是最近版本的 SciPy 中引入的一个错误。 您是否故意使xy 具有(1, 5) 的形状,而不仅仅是(5,)?我认为这个错误有一个简单的解决方法,但这些形状似乎会导致不同的问题。 @WarrenWeckesser 不,我只是想证明这个问题!我在我的实际项目中使用一维数组 - 我只是想用数据制作一些一维数组。写 (5,) 更正确吗?我会试试的。。 【参考方案1】:

最近对 Scipy 的更新在某种程度上破坏了一些东西 - 正如 @WarrenWeckesser 在 cmets 中所说,设置 values = x 可以让事情再次正常运行。

【讨论】:

以上是关于为啥 binned_statistic_2d 现在抛出 TypeError?的主要内容,如果未能解决你的问题,请参考以下文章

使用`scipy.stats.binned_statistic`标准化分箱值的标准偏差

为啥 direct2d 看起来像素化且不准确?

为啥我的 Tkinter 画布显示?

为啥 Graphics2D.setStoke() 不适用于 Graphics2D.drawString?

为啥事件触发器在统一 2d 中不起作用?

5.Libgdx扩展学习之Box2D_刚体的运动和贴图