python中的list和array的不同之处

来源:互联网 发布:mysql 自动记录时间 编辑:程序博客网 时间:2024/06/06 19:38

python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。

在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了

例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。


1、numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型

list1=[1,2,3,'a']  print list1    a=np.array([1,2,3,4,5])  b=np.array([[1,2,3],[4,5,6]])  c=list(a)   # array到list的转换  print a,np.shape(a)  print b,np.shape(b)  print c,np.shape(c)  

运行结果:

[1, 2, 3, 'a'] # 元素数据类型不同,并且用逗号隔开  [1 2 3 4 5] (5L,) # 一维数组,类型用tuple表示  [[1 2 3]   [4 5 6]] (2L, 3L)  [1, 2, 3, 4, 5] (5L,)  

注意:

如果a是array,结果是:[1 2 3 4 5]

如果a是list,结果是:[1, 2, 3, 4, 5]

2、array的创建:参数既可以是list,也可以是元组.使用对应的属性shape直接得到形状

a=np.array((1,2,3,4,5))# 参数是元组  b=np.array([6,7,8,9,0])# 参数是list  c=np.array([[1,2,3],[4,5,6]])# 参数二维数组  print aprint bprint cprint c.shape

结果:

[1 2 3 4 5][6 7 8 9 0][[1 2 3] [4 5 6]](2L, 3L)

3、也可以直接改变属性array的形状,-1代表的是自己推算。这里并不是T, reshape(())也可以

1)

c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])print c.shape # (3L, 4L)c.shape=2,-1print c.shapec.shape=4,-1print c.shape

结果:

(3L, 4L)(2L, 6L)(4L, 3L)

2)

c1 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])d=c1.reshape((4,-1))#d 已变成4 行3 列d[1:2]=66    #把第1行所有元素变为66print dd[1:3]=66    #把第1,2 两行所有元素变为66print d

结果:

[[ 1  2  3] [66 66 66] [ 6  7  7] [ 8  9 10]][[ 1  2  3] [66 66 66] [66 66 66] [ 8  9 10]]


X1=np.array([[1,2],[3,5],[1,9],[3,4],[1,8],[3,14],[1,10],[31,4]])nn = np.array([2,3,5,7])print X1[nn]  #显示第2,3,5,7 行的内容

结果:

[[ 1  9]
 [ 3  4]
 [ 3 14]
 [31  4]]