我有一个3D数组r (1000 x 10 x 2000)
,其构造如下:
q = np.random.normal(size=(10,2000))
r = np.random.normal(loc=q, size=(1000,10,2000))
此数组r
可以看作是重复2000次的1000 x 10
矩阵。
我想根据以下规则缩小此数组:
要选择的列可以通过np.argmax(r[0], axis=0)
获得。
结果应为1000 x 2000
矩阵。
我想知道是否有可能在不使用for
循环或列表理解的情况下获得类似的东西。
这是一个for
循环,可以完成上述任务:
x = []
for i, idx in enumerate(np.argmax(r[0], axis=0)):
x.append(r[:,idx,i])
x = np.array(x).T
答案 0 :(得分:0)
我想到的解决方案如下:
r[:, np.argmax(r[0],axis=0), np.arange(2000)]
当然,欢迎使用更优雅的解决方案。