Python numpy中更快的histogram2d计算
我有一个计算联合分布熵的代码,我正在使用histogram2d计算大小为20000 x 300的矩阵(以及如此大的数据集)所有列的**成对**联合熵,即n*n-1/2计算 大部分时间用于计算关节计数。简单的cProfiling显示了以下代价高昂的功能:Python numpy中更快的histogram2d计算,python,numpy,histogram2d,Python,Numpy,Histogram2d,我有一个计算联合分布熵的代码,我正在使用histogram2d计算大小为20000 x 300的矩阵(以及如此大的数据集)所有列的**成对**联合熵,即n*n-1/2计算 大部分时间用于计算关节计数。简单的cProfiling显示了以下代价高昂的功能: histogram2d -> histogramdd -> atleast_2d -> asarray -> numpy.core.multiarray.array 87% 85
histogram2d -> histogramdd -> atleast_2d -> asarray -> numpy.core.multiarray.array
87% 85% | 40% 38% 39%
|--> digitize
10 %
我认为np.Digitalize是做大部分计数工作的那个。但似乎很多时间都被其他函数占用了,比如asarray!有人能指出如何以更简单的方式使这些计算更快吗!(也就是说,显然没有指示我用C/C++编写直方图函数)
提前谢谢。这个问题与我之前发布的MI计算相关:
这只是猜测,但您的输入似乎不是histogram2d所期望的格式,因此需要进行转换才能使用。如果您查看调用
中的源代码,至少\u 2d
作为副本发生,除非它与预期的形状不匹配。谢谢@Hooked。。我去看看。因为它只传递向量和矩阵。我可以做些什么来确保数据类型?我们帮助您的最好方法是发布一个显示您的问题的最小工作示例。如果它是一个数据类型问题,我们无法用这里给出的信息来诊断它。谢谢@Hooked。我在这里发布了一条: