加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用单个索引项的numpy子矩阵3D

发布时间:2020-12-20 13:15:29 所属栏目:Python 来源:网络整理
导读:我有一个3D numpy数组: K = (np.arange(36)).reshape((4,3,3))+1[[[ 1 2 3][ 4 5 6][ 7 8 9]][[10 11 12][13 14 15][16 17 18]][[19 20 21][22 23 24][25 26 27]][[28 29 30][31 32 33][34 35 36]]] 其中K中的每个项目都是矩阵. 现在,我想使用某个索引向量
我有一个3D numpy数组:

K = (np.arange(36)).reshape((4,3,3))+1
[[[ 1  2  3]
[ 4  5  6]
[ 7  8  9]]

[[10 11 12]
[13 14 15]
[16 17 18]]

[[19 20 21]
[22 23 24]
[25 26 27]]

[[28 29 30]
[31 32 33]
[34 35 36]]]

其中K中的每个项目都是矩阵.
现在,我想使用某个索引向量获取所有2D子矩阵

我知道这有可能:

idx = np.s_[:,:2,:2]
K_sub = K[idx]
[[[ 1  2]
[ 4  5]]

[[10 11]
[13 14]]

[[19 20]
[22 23]]

[[28 29]
[31 32]]]

问题是我想使用任意索引数组而不是切片来选择行和列.

此外,我想使用单个对象来获取子矩阵列表,例如:

K_sub = [magic_indexing]

并不是:

K_sub = np.array([k_[train][:,train] for k_ in K])

存在一种简单的方法吗?

解决方法

不确定它是否足够适合你,但有一种方法是使用 np.ix_,因此使用 advanced-indexing,就像这样 –

K[np.ix_(np.arange(K.shape[0]),train,train)]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读