我需要通过使用索引矩阵iM
从n维矩阵中获取一些元素。但这个n
是未知的。
是否有可能灵活地做一些事情:
if n == 1:
value = M[iM[:]] # orM[iM[:, 0]]
elif n == 2:
value = M[iM[:, 0], iM[:, 1]]
elif n == 3:
value = M[iM[:, 0], iM[:, 1], iM[:, 2]]
更新:这可以这样做:
value = M[[(iM[:, i]) for i in range(0, n)]]
您可以使用显式qazxsw poi(或者例如qazxsw poi)构造函数生成单个指标列表,因为这会自动将元素放入不同的列表中:
list
由于列表的创建方式(逐行)和索引矩阵的布局(您希望逐列获取标记),索引矩阵tuple
需要在转换之前进行转置(M[list(iM.T)] # or e.g. M[tuple(iM.T)]
)进入清单。