一維索引
我們都知道,在元素列表或者數組中,我們可以用如同a[2]一樣的表示方法,同樣的,在Numpy中也有相對應的表示方法:
import numpy as np
A = np.arange(3,15)
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
print(A[3]) # 6
讓我們將矩陣轉換為二維的,此時進行同樣的操作:
A = np.arange(3,15).reshape((3,4))
"""
array([[ 3, 4, 5, 6]
[ 7, 8, 9, 10]
[11, 12, 13, 14]])
"""
print(A[2])
# [11 12 13 14]
實際上這時的A[2]對應的就是矩陣A中第三行(從0開始算第一行)的所有元素。
二維索引
如果你想要表示具體的單個元素,可以仿照上述的例子:
print(A[1][1]) # 8
此時對應的元素即A[1][1],在A中即橫縱座標都為1,第二行第二列的元素,即8(因為計數從0開始)。同樣的還有其他的表示方法:
print(A[1, 1]) # 8
在Python的 list 中,我們可以利用:對一定範圍內的元素進行切片操作,在Numpy中我們依然可以給出相應的方法:
print(A[1, 1:3]) # [8 9]
這一表示形式即針對第二行中第2到第4列元素進行切片輸出(不包含第4列)。 此時我們適當的利用for函數進行打印:
for row in A:
print(row)
"""
[ 3, 4, 5, 6]
[ 7, 8, 9, 10]
[11, 12, 13, 14]
"""
此時它會逐行進行打印操作。如果想進行逐列打印,就需要稍稍變化一下:
for column in A.T:
print(column)
"""
[ 3, 7, 11]
[ 4, 8, 12]
[ 5, 9, 13]
[ 6, 10, 14]
"""
上述表示方法即對A進行轉置,再將得到的矩陣逐行輸出即可得到原矩陣的逐列輸出。
最後依然說一些關於迭代輸出的問題:
import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A.flatten())
# array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
for item in A.flat:
print(item)
# 3
# 4
……
# 14
這一腳本中的flatten是一個展開性質的函數,將多維的矩陣進行展開成1行的數列。而flat是一個迭代器,本身是一個object屬性。
閱讀更多 僱個城管打天下y 的文章