import numpy as np
z = np.array([[1,3,5],[2,4,6]])
print(z[0:, :2])
答:
[[1, 3] [2, 4]]
我是一個Python初學者,我是求解互動練習時,上述問題出現了。
我無法理解,在這種情況下z [0 :,:2]是如何工作的?如果可能,請幫我理解這種情況。
import numpy as np
z = np.array([[1,3,5],[2,4,6]])
print(z[0:, :2])
答:
[[1, 3] [2, 4]]
我是一個Python初學者,我是求解互動練習時,上述問題出現了。
我無法理解,在這種情況下z [0 :,:2]是如何工作的?如果可能,請幫我理解這種情況。
你可以閱讀有關numpy的切片和索引的位置:
https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html
在這種情況下,0:
的意思是「所有行,從第0行開始並且一直到結尾」(您也可以使用等效的:
,這意味着「所有行,從開始和結束「)。
:2
的意思是「所有列,從頭開始,直到(但不包括)列2」。
合起來,z[0:, :2]
表示「包含所有行和前兩列的z
的部分」。列出的第一個維度是行,第二個維度是列。如果你的數組是3D的,你可以用另一個逗號包含另一個維度,等等。
首先你要得到所有行(0:
相同:
):
[[1,3,5],
[2,4,6]]
然後你問列0和1(:2
相同0:2
這意味着從0到2獨家) :
[[1,3],
[2,4]]
z[0:, :2]
選擇在所有的所有元素(即,兩個)的行(0:
選擇從0開始行索引的範圍),並在所述第一兩列(:2
選擇列索引0和1)
column 0 1 2
--------------
row 0 | 1 3 5
row 1 | 2 4 6
這是numpy數組的一個特性,在本例中適用於2D數組。
如果z = np.array([l0, l1, l2, l3])
其中L0,L1,L2,L3是列表,
然後z[1:3,2:5] = [l0[2:5], l1[2:5]]
所以第一片道理也適用於外列表中,而第二個觀點也適用於內部列表。這可以推廣到3D numpy的陣列等
這裏的DOC: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html
的索引符號的第一部分表示的行(第一軸),而第二個指示所述列或第二軸。在這種情況下,您可以從第一列到第三列進行選擇,因爲':2'包含'0,1'列。 – Kasramvd