gpt4 book ai didi

python - 沿其中一个轴应用 numpy 'where'

转载 作者:行者123 更新时间:2023-12-04 14:05:54 24 4
gpt4 key购买 nike

我有一个这样的数组:

array = np.array([
[True, False],
[True, False],
[True, False],
[True, True],
])

我想为数组的每一行找到 True 的最后一次出现。如果它是一维数组,我会这样做:

np.where(array)[0][-1]

如何在 2D 中做类似的事情?有点像:

np.where(array, axis = 1)[0][:,-1]

但是 np.where 中没有 axis 参数。

最佳答案

由于True大于False,求出每一行中最大元素的位置。不幸的是,argmax 找到了第一个最大的元素,而不是最后一个。因此,将数组横向反转,找到第一个 True 从末尾,然后重新计算索引:

(array.shape[1] - 1) - array[:, ::-1].argmax(axis=1)
# array([0, 0, 0, 1])

如果一行中没有 True 值,则该方法失败。您可以通过除以 array.max(axis=1) 来检查是否属于这种情况。没有 True 的行将在无穷大处有最后一个 True :)

array[0, 0] = False
((array.shape[1] - 1) - array[:, ::-1].argmax(axis=1)) / array.max(axis=1)
#array([inf, 0., 0., 1.])

关于python - 沿其中一个轴应用 numpy 'where',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68547194/

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