Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中索引numpy数组的说明_Python_Arrays_Numpy - Fatal编程技术网

python中索引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

我是一名高中生,通过查看一些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
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]])

你明白了。这些文件相当不错——而且