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。
注意:代碼中表示“和”以及“或”的標識是:&和 |