python - 按行将 digitalize() 应用于 ndarray

标签 python numpy row

我有一个带有 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/

相关文章:

python - 如何使用变量值来调用数据框?

python - 两个并排的 Dash 控件

python - 矢量化:掩码的每一行都包含要掩码的数组相应行的列索引

python - 将带有索引的 numpy 数组转换为 pandas 数据框

r - 删除部分NA值的行和列

javascript - 应用脚本 : How to know the Last Row of a Merged cell

python - Django - 当用户提交表单时,会创建表,但表之间的连接不是

python - fit_generator 的训练精度为 0

python - 在数组和元组之间转换时的舍入问题

row - 指定字符串搜索的列和行