1. 程式人生 > >Python資料處理之(六)numpy索引

Python資料處理之(六)numpy索引

一、一維索引

在元素列表或者陣列中,我們可以用如同a[2]一樣的索引方法,同樣的,在Numpy中也有相對應的表示方法。

>>> import numpy as np
>>> A=np.arange(3,15)
>>> print(A)
[ 3  4  5  6  7  8  9 10 11 12 13 14]
>>> print(A[3])
6

讓我們將矩陣轉換為二維的,此時進行同樣的操作:

>>> A=np.arange(3,15).reshape((3,4))
>>
> print(A) [[ 3 4 5 6] [ 7 8 9 10] [11 12 13 14]] >>> print(A[2]) [11 12 13 14]

可以看出,A[2]對應的是矩陣A的第行(因為索引是從0開始的)

二、二維索引

二維矩陣中想要具體的單個元素(A[行][列]):

>>> import numpy as np
>>> A=np.arange(3,15).reshape((3,4))
>>> print(A)
[[ 3  4  5  6]
 [ 7  8  9 10]
 [
11 12 13 14]] >>> print(A[2][1]) 12

也可以採用下面這種形式(A[行,列]):

>>> print(A[2,1])
12

在Python的 list 中,我們可以利用:對一定範圍內的元素進行切片操作,在Numpy中我們依然可以給出相應的方法:

>>> print(A[2][0:2])
[11 12]
>>> print(A[2,0:2])
[11 12]

對第3行中第0到第```列元素進行切片輸出(不包含第2列)。
我們適當的利用for函式進行列印:

>>
> A=np.arange(3,15).reshape((3,4)) >>> print(A) [[ 3 4 5 6] [ 7 8 9 10] [11 12 13 14]] >>> for i in A: print(i) [3 4 5 6] [ 7 8 9 10] [11 12 13 14]

上邊是按行輸出,如果想按列輸出,就對A進行轉置操作:A.T

>>> for i in A.T:
	print(i)

[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
[ 6 10 14]

最後依然說一些關於迭代輸出的問題,這一指令碼中的flatten是一個展開性質的函式,將多維的矩陣進行展開成1行的數列。而flat是一個迭代器,本身是一個object屬性。

>>> import numpy as np
>>> A=np.arange(3,15).reshape((3,4))
>>> print(A)
[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
>>> print(A.flatten)
<built-in method flatten of numpy.ndarray object at 0x0000018569A42C60>
>>> print(A.flatten())
[ 3  4  5  6  7  8  9 10 11 12 13 14]
>>> for i in A.flat:
	print(i)

3
4
5
6
7
8
9
10
11
12
13
14