gpt4 book ai didi

python - 如何有效地找到numpy矩阵中一行最左边非空值的索引列?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:44 26 4
gpt4 key购买 nike

我想知道是否有一种快速的方法可以找到每行最左边的非空值的索引一个 numpy 矩阵。

假设我有这个:

data = np.array([[np.nan, np.nan, 10,      1],
[np.nan, 30, 50, np.nan],
[40, np.nan, np.nan, 5],
[np.nan, np.nan, np.nan, 10]])

我想分别返回 10、30、40 和 10 的索引,即 2、1、0 和 3。

下面的方法有效,但效率不高(例如,fn 函数中的循环很慢):

def fn(row):
for idx, v in enumerate(row):
if not np.isnan(v):
return idx
np.apply_along_axis(fn, 1, data)

最佳答案

使用 np.isnan 获取非空值的 bool 数组,然后使用 argmax(1) 获取每一行中的第一个索引,最后索引到输入中数组 -

In [19]: idx = (~np.isnan(data)).argmax(1)

In [20]: idx
Out[20]: array([2, 1, 0, 3])

In [21]: data[np.arange(len(idx)), idx]
Out[21]: array([10., 30., 40., 10.])

关于python - 如何有效地找到numpy矩阵中一行最左边非空值的索引列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com