python - 将 numpys 花式索引与切片相结合
问题描述
我目前有一个二维 numpy 数组 shape (m, n)
。此外,我有两个(m, p)
索引数组i1
和i2
. 索引总是连续的!
import numpy as np
t = np.array([[-1, -1, 0, 0, 1, 2, 2],
[-1, -1, 0, 1, 2, 3, 3],
[0, 0, 1, 2, 2, 3, 3]])
i1 = np.array([3, 2, 2])
i2 = np.array([4, 3, 3])
如何使用数组i1
和i2
切片t
以获得以下子矩阵?
expected_t = np.array([
[0, 1],
[0, 1],
[1, 2]
])
那是
expected_t[0, :] = t[0, i1[0]:i2[0]]
expected_t[1, :] = t[1, i1[1]:i2[1]]
expected_t[2, :] = t[2, i1[2]:i2[2]]
此外,这是否可以在不通过创建视图复制数据的情况下完成?
提前感谢所有帮助!
解决方案
在 numpy 中使用精美的索引:
t[np.arange(3).reshape(3,1), np.vstack((i1,i2)).T]
或者
t[np.arange(3), np.vstack((i1,i2))].T
两者都会有结果:
array([[0, 1],
[0, 1],
[1, 2]])
推荐阅读
- android - navigator.pop() 后无法更新状态
- arduino - 如何获取上传固件的日期和时间?
- android - 在 Android Studio 中无法导入 kotlin。无法下载 kotlinx-coroutines-core-1.3.7.jar (org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7)
- html - How to place two elements inside of an hexagon in HTML?
- c++ - 基于条件的模板重载
- java - Postgres 数据库设置以允许 ddl 生成
- ios - 为什么 UITextView 会闪烁?
- macos - macOS 上的 l2tp/ipsec client-vpn docker 无法连接 vpn-server,注意:“我们要求 IKEv1 对等体具有 ID 'xxx.xxx.xxx.xxx',但对等体声明'%any'”
- magento - 一些用户说他们无法在网站上看到折扣,但是当我们从我们的最后检查时,它在 magento 2.1.1 中可见
- teiid - Teiid 嵌入式缓存最大条目