我有一个带有 NaN 的示例 ndarray
import numpy as np
m,n,c = 10,5,15;
A = np.random.randn(m,n)
linidx = np.random.choice(A.size, c, replace=False)
np.put(A,linidx,np.nan)
我想找到一个值属于哪个十分位数,并且我想按行进行。
因此,我计算百分位数:
edges = np.nanpercentile(A,range(10,110,10),axis=1)
然后我需要在 A
的每一行应用 digitize()
函数并使用相应的 edge
。
我正在查看np.apply_along_axis()
,但也许我应该明确地按行循环?
最佳答案
我现在采用以下解决方案:
bins = np.zeros((m,n),np.int64)
for r in range(A.shape[0]):
bins[r,:] = np.digitize(A[r,:], edges[r,:])
欢迎更快或更优雅的替代方案
关于python - 按行将 digitalize() 应用于 ndarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188039/