python中的二维数组,主要有 list(列表) 和 numpy.ndarray(多维数组) 两种, 两种的区别主要体现在numpy.ndarray 支持更多的索引方式,下面通过代码来看一下两种数据类型索引方式的区别:
import numpy as np
a=[[1,2,3], [4,5,6]]
type(a)
<type 'list'>
a
[[1, 2, 3], [4, 5, 6]]
b=np.array(a)
type(b)
<type 'numpy.ndarray'>
b
array([[1, 2, 3],
[4, 5, 6]])
接着对a 和b 中的元素进行访问:
a[1]
[4, 5, 6]
b[1]
array([4, 5, 6])
a[1][1]
5
b[1][1]
5
a[1][:]
[4, 5, 6]
b[1][:]
array([4, 5, 6])
#下面就是两者的区别
a[1,1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple
b[1,1]
5
a[:,1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple
b[:,1]
array([2, 5])
可以看到numpy.ndarray 比list的访问方式更灵活,因此在处理数据时,可以通过np.array()方便的将list转化为numpy.ndarray, 当然处理完后还可以通过tolist()将ndarray再转回列表,从而方便删除或添加元素。
import numpy as np
a=[[1,2,3],[4,5,6]]
type(a)
<type 'list'>
b=np.array(a)
type(b)
<type 'numpy.ndarray'>
c=b.tolist()
type(c)
<type 'list'>