如何将qcut或类似函数应用于二维阵列

2024-04-18 17:51:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将2D数组中的列离散成大小相等的桶。 一个简单的二维阵列示例,其中包含NAN:

import numpy as np
import pandas as pd
np.random.seed(0)
sarray = np.random.rand(500,500)
sarray[sarray>0.9] = np.nan

我尝试使用Pandas qcut函数:

pd.qcut(sarray, q=10, labels=False, duplicates='drop')

但它只支持一维阵列

ValueError: Input array must be 1 dimensional

我可以通过列表了解结果:

[pd.qcut(sarray[:,col], q=10, labels=False, duplicates='drop') for col in range(sarray.shape[1])]

但这种方法并没有将计算矢量化。Numpy是否有办法将此离散化问题矢量化(即在单个2D阵列上执行计算,而不是在多个1D阵列上执行计算)