【发布时间】:2018-10-12 14:04:47
【问题描述】:
我目前有一个形状为(m, n) 的二维numpy 数组。此外,我有两个(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]]
此外,是否可以通过创建视图而不复制数据来做到这一点?
提前感谢所有帮助!
【问题讨论】:
-
我认为这本机是不可能的。如果确实需要复制,您是否正在寻找解决方案?
标签: python numpy matrix-indexing