1、python中的二維數組,主要有list和numpy.array兩種
1 >>import numpy as np 2 3 >>a=[[1,2,3],[4,5,6],[7,8,9]] 4 >>a 5 [[1,2,3],[4,5,6],[7,8,9]] 6 >>type(a) 7 <type 'list'> 8 9 >>b=np.array(a)"""List 轉為 array""" 10 >>type(b) 11 <type 'numpy.array'> 12 >>b 13 array=([[1,2,3], 14 [4,5,6], 15 [7,8,9]])
2、list對應的索引輸出情況:
1 >>a[1][1] 2 5 3 4 >>a[1] 5 [4,5,6] 6 7 >>a[1][:] 8 [4,5,6] 9 10 >>a[1,1]"""相當於a[1,1]被認為是a[(1,1)],不支持元組索引""" 11 Traceback (most recent call last): 12 File "<stdin>", line 1, in <module> 13 TypeError: list indices must be integers, not tuple 14 >>a[:,1] 15 16 Traceback (most recent call last): 17 File "<stdin>", line 1, in <module> 18 TypeError: list indices must be integers, not tuple
>>b[1][1] 5 >>b[1] array([4,5,6]) >>b[1][:] array([4,5,6]) >>b[1,1] 5 >>b[:,1] array([2,5,8])
4、先看一段代碼
先看一段代碼 >>array = [0, 0, 0] >>matrix = [array*3] ## [[0,0,0,0,0,0,0,0,0]] 這段代碼其實沒有新建一個二維數組 再看一段代碼 >>array = [0, 0, 0] >>matrix = [array] * 3 ## [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 咋一看這段代碼應該創建一個二維數組了 測試一下 >>matrix[0][1] = 1 >>print matrix ## [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 照理matrix[0][1]修改的應該只是二維數組中的一個元素,但是測試結果表明,修改的是每個List的第二個元素。
matrix = [array] * 3操作中,只是創建3個指向array的引用,所以一旦array改變,matrix中3個list也會隨之改變。