1. List

1.1基础
list = []#空列表
list[2]#列表中第3个元素
list[1:]#从第2个元素开始截取列表
list.append(obj)#列表末尾添加元素obj
list.insert(index, obj)#将对象obj插入列表
1.2 range()函数
list = range(5)
#list = [0,1,2,3,4]

list = range(10,15)
#list = [10,11,12,13,14]

range() 函数可创建一个整数列表,一般用在 for 循环中。

for i in range(3):
	print(i)
#0
#1
#2

2、Numpy

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

2.1 numpy.linspace()函数

linspace()是外部库numpy的函数,在调用之前需要import numpy。
linspace(start,end,size),size是取点的个数。
注意没有linspace(start)这种形式,它内部最少要传递2个参数,但是这样的linspace(start,end)并不可控,所以要想获得你所想要的数字序列,最好使用linspace(start,end,size)形式。

import numpy as np
l = np.linspace(3,12,4)
print(l)
#[ 3.  6.  9. 12.]
2.2 np.zeros()函数

生成相应大小的零矩阵。

np.zeros(5)###生成包含5个元素的零矩阵
#array([ 0., 0., 0., 0., 0.])

np.zeros((5,), dtype=np.int)###生成包含5个元素的零矩阵,且各元素为整形
#array([0, 0, 0, 0, 0])

np.zeros((2, 1))#生成2行1列的零矩阵
#array([[ 0.],
#       [ 0.]])

s = (2,2)#生成2行2列的零矩阵
np.zeros(s)
#array([[ 0., 0.],
#       [ 0., 0.]])
2.3 np.array()函数和np.asarray()函数

array和asarray都可以将结构数据转化为ndarray;但是主要区别就是当数据源是ndarray时,array会copy出一个副本,占用新的内存,但asarray不会。
1).输入为列表list时

a=[[1,2,3],[4,5,6],[7,8,9]]
    b=np.array(a)
    c=np.asarray(a)
    a[2]=1
    print(a)
    print(b)
    print(c)

python list 前n条_python list 前n条


从中我们可以看出np.array与np.asarray功能是一样的,都是将输入转为矩阵格式。当输入是列表的时候,更改列表的值并不会影响转化为矩阵的值。

2).输入为数组ndarray时

a=np.random.random((3,3))
print(a.dtype)
b=np.array(a,dtype='float64')
c=np.asarray(a,dtype='float64')
a[2]=2
print(a)
print(b)
print(c)

python list 前n条_python list 前n条_02


从上述结果我们可以看出np.array与np.asarray的区别,在于输入为数组ndarray时,np.array是将输入copy一个副本,占用新的内存;而np.asarray是调用原内存数据。

3. 二维数组

3.1 二维数组

简单来说,二维数组就是有两层[]号,如

a=[[1,2],[3,4]]

a就是一个二维数组。
从Python角度看,就是list中的元素也是list;从矩阵角度看,矩阵在程序里的实现就是二维数组。
相应的,如果有N层[],就是N维数组,如

b = [ [[1,2],[3,4]],
      [[5,6],[7,8]] ]

b就是三维数组。

3.2 list和numpy.array的二维数组区别

这部分内容主要参考这位博客: Python中的二维数组(list与numpy.array).

import numpy as np

#①list
a=[[1,2,3],[4,5,6],[7,8,9]]
print(type(a))
#<type 'list'>
print(a)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

#②numpy
b=np.array(a)
print(type(b))
#<type 'numpy.array'>
print(b)
array=([[1,2,3],
        [4,5,6],
        [7,8,9]])

list对应的索引输出情况:

print(a[1][1])
#5
print(a[1])#第二行,所有列
#[4,5,6]
print(a[1][:])#等同于a[1]
#[4,5,6]
print(a[1,1])
#error,相当于a[1,1]被认为是a[(1,1)],不支持元组索引
print(a[:,1])
#error

numpy.array对应的索引输出情况:

print(b[1][1])
#5
>>print(b[1])
#array([4,5,6])
>>print(b[1][:])
#array([4,5,6])
###以上都与list类似

print(b[1,1])
#5
print(b[:,1])
#array([2,5,8])

由上面的简单对比可以看出, numpy.array支持比list更多的索引方式。此外从[Numpy-快速处理数据]上可以了解到“由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],有3个指针和3个整数对象。”