Python之二维数组(list与numpy.array)
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也会随之改变。