我们有一个3D阵列(671,9066,2):
671 IdUser(集团)
对于每个671位用户,我们有9066(行)电影和proba相关(2列)
1位用户的两列示例:
Proba Idmovie
[ 6.93933334e-02, 1.00000000e+00],
[ 8.50563031e-02, 2.00000000e+00],
....
[ 2.95071098e-02, 3.00000000e+00]
我们需要最大的proba(此处为8.50563031e-02)和第二列的值(此处为2.00000000e + 00)。这适用于每个671位用户!
非常感谢
答案 0 :(得分:0)
肯定有一种更聪明的方法,但我的方法是:
import numpy as np
x = np.random.random((3,3,2))
print(x)
for user in x:
maximum = np.max(user[:,0])
index = np.where(user[:,0]==maximum)
print(user[index])
最好的问候
答案 1 :(得分:0)
numpy中最紧凑的方式可能是这样的:
x[range(x.shape[0]),np.argmax(x, axis=1)[:,0],:]
<强>解释强>
np.argmax(x, axis=1)
返回第二个(“电影”)轴的最大值索引
np.argmax(x, axis=1)[:,0]
将此缩减为第一列,因为我们只需要最大问题的索引
使用这些索引作为索引数组,我们只需为每个用户检索相应的proba / idmovie元组。结果是一个形状数组(671,2),每个用户都有最大的proba和相关的电影ID。