我从Matlab / octve切换到Numpy / Scipy。
要选择一个Matlab数组的片段,这很容易。 例如
>> x = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]
x =
1 2 3 4
5 6 7 8
9 10 11 12
>> y = x(2:3, 1:2)
y =
5 6
9 10
时,如何使用NumPy完成同样的事情
x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
答案 0 :(得分:1)
在NumPy文档中提到Indexing > Other indexing options,
切片和跨步的工作原理与列表和元组完全相同,只是它们也可以应用于多个维度。
对于您的示例,这意味着
import numpy as np
x = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# array([[ 1, 2, 3, 4],
# [ 5, 6, 7, 8],
# [ 9, 10, 11, 12]])
x[1:3, 0:2]
# => array([[ 5, 6],
# [ 9, 10]])
与Matlab最显着的区别可能是索引是从零开始的(即,第一个元素具有索引0
)并且索引范围(在Python中称为“切片”)用独占上限表示:{ {1}}获取l[4:7]
,l[4]
和l[5]
(第3到第7个元素),但不是l[6]
(第8个元素)。
Python tutorial's section on lists将让您了解索引和切片如何适用于普通(1维)集合。