Python之Numpy庫(2)

Numpy的一些基本操作

1、numpy的數據選取

matrix = numpy.array([['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'k'], ['l', 'm', 'n', 'o', 'p'], ['q', 'r', 's', 't', 'u']])
print(matrix)
print(matrix.shape)

先看一下打印出來的結果:

[['a' 'b' 'c' 'd' 'e']
 ['f' 'g' 'h' 'i' 'k']
 ['l' 'm' 'n' 'o' 'p']
 ['q' 'r' 's' 't' 'u']]
(4, 5)

嗯,是一個4行5列的矩陣。

現在要求將'k'這個值取出來,要怎麼操作呢?

character_search1 = matrix[1, 4]
print(character_search1)

#運行結果:
k

[1,4]代表的是,第2行的第5個元素(起始數字爲0)。這樣,我們就把'k'取出來了。同理,我們可以再試試如何取到'm':

character_search2 = matrix[2, 1]
print(character_search2)

#運行結果:
m

 

2、numpy的切片 

類似於python,numpy也可以使用切片的方法來獲取數據。可以看看下面這個例子:

vector = numpy.array([1, 2, 3, 4])
print(vector[0:3])

#運行結果:
[1 2 3]

從運行結果來看,numpy的切片和python的切片十分類似。

但是,如果不是取其中的一個值,而是要取一列,要如何操作呢?

matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix[:, 2]) #取所有行中的第3列

#運行結果:
[15 30 45]

matrix[:, 2]的是這樣理解的,冒號的意思是取全部的行,2的意思是第3列,所以取到了15,30和45。

同理,我們也可以取其中的兩列:

matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix[:, 0:2]) #取所有行中的第1列和第2列

#運行結果:
[[ 5 10]
 [20 25]
 [35 40]]

matrix[:, 0:2]中,第一個冒號之前表示取所有行,第二個冒號表示列的範圍。類似於python中的切片,0:2的範圍是0到1,取不到2。

我們再來加一點難度,比如取第1—2行的第1—2列:

matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix[0:2, 0:2]) #取1-2行的1-2列

#運行結果:
[[ 5 10]
 [20 25]]

 

3、numpy中的運算

vector = numpy.array([5, 10, 15, 20])
equal_to_ten = (vector == 10) #查看數組中有沒有10
print(equal_to_ten)

#運行結果:
[False  True False False]

我們可以看到,如果數組中的元素爲10,則返回True,否則返回Flase。

同理,這種運算也可以運用到矩陣當中:

matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
second_column_25 = (matrix[:, 1] == 25)
print(second_column_25)
print(matrix[second_column_25, :])

#運行結果:
[False  True False]
[[20 25 30]]

我們可以將返回的布爾值代入到數組當中,如:print(matrix[second_column_25, :]),以此來求出帶有25數字的那一行。

 

4、其他一些判斷

先說一說“與”的操作:

vector = numpy.array([5, 10, 15, 20])
equal_to_ten_and_five = (vector == 10) & (vector == 5) #尋找一個值既等於10又等於5
print(equal_to_ten_and_five)

#運行結果:
[False False False False]

結果表明,在數組找不到一個元素既等於10又等於5

再說下“或”的操作:

vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5) #尋找一個值等於5或等於10
print(equal_to_ten_or_five)

#運行結果:
[ True  True False False]

結果表明,在數組中的前2個元素,等於10或者等於5。

注意:代碼中表示“和”以及“或”的標識是:&和 |

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章