我想使用最有效的方法(即没有 python for 循环)在 numpy 二维数组中获取每列随机真值的索引。例如,给定以下 2-d numpy.ndarray:np.array(
[[True, False, False],
[True, True, True],
[False, True, False]])提供一个 1-d numpy.ndarray,它给出每列真值的随机行索引位置(即第一轴):numpy.ndarray([0, 2, 1])通过反例,以下内容将不正确:numpy.ndarray([2, 2, 1])因为,第一列在第三行中具有非 True 值。
1 回答

qq_遁去的一_1
TA贡献1725条经验 获得超8个赞
您可以执行以下操作:
import numpy as np
a = np.array(
[[True, False, False],
[True, True, True],
[False, True, False]]
)
result = np.argmax(a * np.random.randint(1, 100, size=a.shape), axis=0)
print(result)
输出
[1 2 1]
这个想法是np.argmax将始终选择数组所在的位置True,然后由random.randint函数完成随机选择哪个位置。True它将为每个值分配一个随机整数,然后您选择最大值的索引。
添加回答
举报
0/150
提交
取消