python里的数组和列表内:的使用方法

注意datamat的类型是numpy中的数组array,并不是列表(list)

代码:

print(datamat)

结果:

[[ 3.  10.   1. ]
 [ 1.1  1.   1. ]
 [ 3.   8.   1. ]
 [ 1.4  1.5  1.6]
 [ 0.4  0.5  0.6]]

代码:print(datamat[:2])

解释[:2]表示取该矩阵内的前两行

[[ 3.  10.   1. ]
 [ 1.1  1.   1. ]]

代码 :print(datamat[:,2])

解释[:2]表示取该矩阵内的第三列

结果:[1.  1.  1.  1.6 0.6]

代码 :print(datamat[2,:])

解释[:2]表示取该矩阵内的第三行

结果:[3.  8.  1. ]

代码:print(datamat[1:3,:])

结果[[1.1 1.  1. ]
 [3.  8.  1. ]]

解释:[1:3,:]表示取数组(矩阵)的第1行第2行。

如果是数组的话,比如data=[1,2,3]

print(data[:2])代表取前两个数据

结果:[1, 2]

但是列表不能用[,n]来取第n列的数据

​ 原因是因为在python中,普通的列表list和numpy中的数组array是不一样的,最大的不同是:一个列表中可以存放不同类型的数据,包括int、float和str,甚至布尔型;而一个数组中存放的数据类型必须全部相同,int或float。

​ 在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,4]需要4个指针和四个数据,增加了存储和消耗cpu,而array1=numpy.array([1,2,3,4])只需要存放四个数据,读取和计算更加方便,因此在做纯数字操作时,建议使用array。

​ 也正因为列表可以存放不同类型的数据,因此列表中每个元素的大小可以相同,也可以不同,也就不支持一次性读取一列,即使是对于标准的二维数字列表:

 print(data[:,2])

TypeError: list indices must be integers or slices, not tuple

猜你喜欢

转载自blog.csdn.net/qq_33374294/article/details/89287013