为啥 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 中引入的一个错误。
您是否故意使x
和y
具有(1, 5)
的形状,而不仅仅是(5,)
?我认为这个错误有一个简单的解决方法,但这些形状似乎会导致不同的问题。
@WarrenWeckesser 不,我只是想证明这个问题!我在我的实际项目中使用一维数组 - 我只是想用数据制作一些一维数组。写 (5,) 更正确吗?我会试试的。。
【参考方案1】:
最近对 Scipy 的更新在某种程度上破坏了一些东西 - 正如 @WarrenWeckesser 在 cmets 中所说,设置 values = x 可以让事情再次正常运行。
【讨论】:
以上是关于为啥 binned_statistic_2d 现在抛出 TypeError?的主要内容,如果未能解决你的问题,请参考以下文章
使用`scipy.stats.binned_statistic`标准化分箱值的标准偏差