python中索引numpy数组的说明
我是一名高中生,通过查看一些numpy代码,我发现了一些与python中索引numpy数组的说明,python,arrays,numpy,Python,Arrays,Numpy,我是一名高中生,通过查看一些numpy代码,我发现了一些与 a = x[:,0:4] x是一个二维阵列。我知道a[:]引用数组a中的所有对象,所以对于x[:,0:4],它会引用x的所有行和索引为0,1,2,3的列(不包括索引为4的列)吗 我只是想确认一下它是如何工作的,因为我已经在几种类型的代码中看到了它,我只是想确认一下。你是对的。该a=x[:,0:4]选择前四列 例如: >>> a = np.arange(25).reshape(5, 5) >>> a
a = x[:,0:4]
x是一个二维阵列。我知道a[:]引用数组a中的所有对象,所以对于x[:,0:4],它会引用x的所有行和索引为0,1,2,3的列(不包括索引为4的列)吗
我只是想确认一下它是如何工作的,因为我已经在几种类型的代码中看到了它,我只是想确认一下。你是对的。该
a=x[:,0:4]
选择前四列
例如:
>>> a = np.arange(25).reshape(5, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
您可以跳过0
,因为a[:,:4]
的意思与a[:,0:4]
相同:
>>> a[:,:4]
array([[ 0, 1, 2, 3],
[ 5, 6, 7, 8],
[10, 11, 12, 13],
[15, 16, 17, 18],
[20, 21, 22, 23]])
您总是可以这样想:“第一维第一,第二维第二,等等。”在2D情况下,第一维是行,第二维是列。是的,这被称为切片表示法,numpy数组也可以使用Python的切片表示法,所以
>>>x = np.arange(25).reshape(5, 5)
>>>a = x[:, 0:4]
>>>a
array([[ 0, 1, 2, 3],
[ 5, 6, 7, 8],
[10, 11, 12, 13],
[15, 16, 17, 18],
[20, 21, 22, 23]])
如果使用切片表示法,x
将是a
的视图,而不是副本,因此如果更改数组x
中的值,该值也将在a
中更改
>>>x[1,1] = 1000
>>>a
array([[ 0, 1, 2, 3],
[ 5, 1000, 7, 8],
[ 10, 11, 12, 13],
[ 15, 16, 17, 18],
[ 20, 21, 22, 23]])
你明白了。这些文件相当不错——而且