我有一个元组列表:我有我的2d numpy数组:[(0,0), (1,1), (2,2), (3,3), (4,4)]array([[8, 6, 5, 9, 3],
[7, 9, 7, 9, 1],
[2, 1, 8, 8, 6],
[7, 1, 5, 1, 3],
[6, 7, 1, 1, 5]])如何通过使用带有numpy的列表位置从2d数组中获取值?我应该得到对角线:[8,9,8,1,5]
3 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
试试这个,
>>> import numpy as np>>> req_index = [(0,0), (1,1), (2,2), (3,3), (4,4)] # this is your tuple index list>>> arr = np.array([[8, 6, 5, 9, 3], [7, 9, 7, 9, 1], [2, 1, 8, 8, 6], [7, 1, 5, 1, 3], [6, 7, 1, 1, 5]]) >>>
输出:
>>> [arr[i][j] for i, j in req_index] [8, 9, 8, 1, 5]
月关宝盒
TA贡献1772条经验 获得超5个赞
您可以转置元组列表,并将这些元组作为项传递到元组中:
>>> b = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> a[tuple(np.transpose(b))]
array([8, 9, 8, 1, 5])
慕娘9325324
TA贡献1783条经验 获得超4个赞
以下是执行此操作的一种方法:
a=np.array([[8, 6, 5, 9, 3], [7, 9, 7, 9, 1], [2, 1, 8, 8, 6], [7, 1, 5, 1, 3], [6, 7, 1, 1, 5]]) np.diag(a)
指纹。array([8, 9, 8, 1, 5])
添加回答
举报
0/150
提交
取消