为了账号安全,请及时绑定邮箱和手机立即绑定

在没有for循环的numpy 2-d数组中获取随机真值PER COLUMN的索引

在没有for循环的numpy 2-d数组中获取随机真值PER COLUMN的索引

慕尼黑5688855 2022-10-05 16:36:10
我想使用最有效的方法(即没有 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它将为每个值分配一个随机整数,然后您选择最大值的索引。


查看完整回答
反对 回复 2022-10-05
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号