1.1 numpy数组及其运算(更新ing)
1.1.1创建数组
下面两种是分别把列表和元组转换成为数组。
import numpy as np
np.array([1,2,3,4,5]) #把列表转换成为数组
np.array((1,2,3,4,5)) #把元组转换成为数组
下面是创建二维数组
np.array([(1,2,3,4),(5,6,7,8)])
np.array([[1,2,3,4],[5,6,7,8]])
这两种方式的结果相同
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
还可以把range对象转换成数组
np.array(range(5)) #把range对象转换成数组
另外,可以用类似于内置函数range()的arange()来建立数组。arange()类似于python的内置函数range(),是比较常用的一个函数,通过指定
start:开始值,默认值是0
stop:终值
step:步长,默认值是1
dtype:数组类型
来创建表示等差数列的一维数组,返回给定间隔内的均匀间隔值,注意得到的结果数组不包含终值
arange参数的问题:
当arange有一个参数的时候,该参数被认为是stop的值,如下:
np.arange(8)
结果为:
array([0, 1, 2, 3, 4, 5, 6, 7])
当arange有两个参数的时候,第一个参数被认为是start的值,第二个参数被认为是stop的值,如下:
np.arange(4,10)
结果为:
array([4, 5, 6, 7, 8, 9])
当有三个参数的时候,三个参数依次被认为是start、stop、step的值,如下:
print(np.arange(0,10,2))
print(np.arange(10,0,-1))
print(np.arange(10,0,-2))
运行结果:
[0 2 4 6 8]
[10 9 8 7 6 5 4 3 2 1]
[10 8 6 4 2]
创建等差数组:
linspace()方法:需要指定间隔起始点、终止端,以及指定分隔值总数(包括起始点和终止点);最终函数返回间隔类均匀分布的数值序列。
np.linspace(0,10,11)
其结果为:
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
创建等比数组:
logspace()方法:需要指定等比(base ** start)、终止端(base ** stop),指定总数(包括起始点和终止点),以及base的值,base值默认为10;最终函数返回等比的数值序列。
np.logspace(1,5,5,base=2)
结果就应该为2**1,2**2……2**5,一共5个数。
array([ 2., 4., 8., 16., 32.])
创建全0的数组:
zeros()方法:可以用该方法创建一维或者二维的全0数组。
print(np.zeros(3))
print(np.zeros((3,3)))
结果:
[0. 0. 0.]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
创建全1数组:
ones()方法:可以用该方法创建一维或者二维的全1数组。
print(np.ones(3))
print(np.ones((3,3)))
结果为:
[1. 1. 1.]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
创建单位矩阵:
identity()方法:指定其中的参数n,创建n*n的单位矩阵。
np.identity(3)
结果为:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
创建空数组:
empty()方法:创建一个空数组,只申请空间不初始化(其中的值不一定是什么,随机数)。
np.empty((3,5))
结果:
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
创建特定值数组:
full()方法:其中第一个参数是数组的形状;第二个参数是fill_value(特定值)。该方法会返回一个全是特定值的、符合给出形状的数组。
print(np.full(5,200))
print(np.full((3,3),111))
结果:
[200 200 200 200 200]
[[111 111 111]
[111 111 111]
[111 111 111]]