一起學數據分析之NumPy(05)——切片索引

ndarray的切片語法跟Python列表這樣的一維對象差不多:

In [1]:

<code>

import

numpy

as

np/<code>

In [2]:

<code>

arr

= np.arange(

10

)arr[

1

:

6

]/<code>

Out[2]:

<code>

array([1,

2

,

3

,

4

,

5

])

/<code>

高緯度對象的花樣更多一些,你可以在一個或多個軸上進行切片,也可以跟整數索引混合使用。對於二維數組,其切片方式稍顯不同:

In [3]:

<code>arr2d = np.array(

[[1,2,3],[4,5,6],[7,8,9]]

)arr2d/<code>

Out[3]:

<code>

array([[1,

2

,

3

],

[4,

5

,

6

],

[7,

8

,

9

]])

/<code>

In [4]:

<code>

arr2d

[:2]

/<code>

Out[4]:

<code>array(

[[1, 2, 3], [4, 5, 6]]

)/<code>

可以看出,它是沿著0軸(第一個軸)切片的。也就是說,切片是沿著一個軸向選取元素的。你可以傳入多個切片,就像傳入多個索引那樣:

In [5]:

<code>

arr2d

[:2, 1:]

/<code>

Out[5]:

<code>array(

[[2, 3], [5, 6]]

)/<code>

像這樣進行切片時,只能得到相同維度的數組視圖。通過將整數索引和切片混合,可以得到更低維度的切片:

In [6]:

<code>

arr2d

[1, :2]

/<code>

Out[6]:

<code>

array

([

4

,

5

])/<code>

In [7]:

<code>

arr2d

[2, :1]

/<code>

Out[7]:

<code>

array

([

7

])/<code>

你可以像下面這樣只對高維軸進行切片:

In [8]:

<code>

arr2d

[:, :1]

/<code>

Out[8]:

<code>array(

[[1], [4], [7]]

)/<code>

只有冒號':'代表選取整個軸。 自然,對切片表達式的賦值操作也會被擴散到整個選區。

In [9]:

<code>

arr2d[:2, 1:] = 0arr2d

/<code>

Out[9]:

<code>

array([[1,

0

,

0

],

[4,

0

,

0

],

[7,

8

,

9

]])

/<code>


分享到:


相關文章: