我有一个 2D 数组(NumPy 数组),想要取出一个子数组,该子数组是剪切给定行和列的结果。
作为一个例子,我找到了一种方法:
In [111]: mat
Out[111]:
array([[ 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]])
In [112]: np.delete(np.delete(mat, 3, 1), 0,0)
Out[112]:
array([[ 6, 7, 8, 10],
[11, 12, 13, 15],
[16, 17, 18, 20],
[21, 22, 23, 25]])
这取出了第 0 行和第 3 列。但是,我认为这不是很漂亮,据我所知,它必须为两个额外的数组分配空间,每个从 np 返回的数组都分配一个空间.删除
。
所以问题是,是否有某种方法可以以更高效的读取和内存方式获得所需的结果?理想情况下,它只提供对数组正确元素的引用,而不是完整的副本。请注意,该示例不是我需要的数组,答案应该适用于删除了行 i
和列 j
的 n x n
。
最佳答案
您可以使用 np.column_stack
进行简单的索引:
>>> np.column_stack((A[1:,:3],A[1:,4:]))
array([[ 6, 7, 8, 10],
[11, 12, 13, 15],
[16, 17, 18, 20],
[21, 22, 23, 25]])
关于python - 剪切数组的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742836/