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

通过使用元组列表作为索引从 numpy 2d 数组中获取值

通过使用元组列表作为索引从 numpy 2d 数组中获取值

富国沪深 2022-08-16 10:14:22
我有一个元组列表:我有我的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]


查看完整回答
反对 回复 2022-08-16
?
月关宝盒

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])


查看完整回答
反对 回复 2022-08-16
?
慕娘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])


查看完整回答
反对 回复 2022-08-16
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信