Numpy库介绍

Numpy库数据基本类型

bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)

一、numpy数组的创建

arange格式

numpy.arange(start, stop, step, dtype)
参数描述
start起始值,默认为0
stop终止值(不包含)
step步长,默认为1
dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

从列表创建

1.一维数组

x = np.array([1,2,3,4,5],dtype="数据类型")

2.二维数组

x = np.array([[1,2,3],
[4,5,6],
[7,8,9]
])

linspace格式创建

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数描述
start序列的起始值
stop序列的终止值,如果endpointtrue,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep如果为 True 时,生成的数组中会显示间距,反之不显示。
dtypendarray 的数据类型

均匀分配数组

该数组平均分配0~1,平均分配4份

np.linspace(0,1,4)

logspace格式创建

numpy.logspace 函数用于创建一个于等比数列。格式如下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
参数描述
start序列的起始值为:base ** start
stop序列的终止值为:base ** stop。如果endpointtrue,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为 true 时,数列中中包含stop值,反之不包含,默认是True。
base对数 log 的底数。
dtypendarray 的数据类型

等比数列数组

np.logspace(0,9,10)

zeros格式创建

创建指定大小的数组,数组元素以 0 来填充:

numpy.zeros(shape, dtype = float, order = 'C')

参数说明:

参数描述
shape数组形状
dtype数据类型,可选
order’C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组

长度为5,值都为0的数组

np.zeros(5,dtype=int)

ones格式创建

创建指定形状的数组,数组元素以 1 来填充:

numpy.ones(shape, dtype = None, order = 'C')

参数说明:

参数描述
shape数组形状
dtype数据类型,可选
order’C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组

(2)2*4的浮点型数组

np.ones((2,4),dtype=float)

full格式创建

填充一个指定格式的列表

用法:

numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)
参数描述
shape数组形状
fill_value标量或类似数组
dtype数据类型,可选
order’C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组
like允许创建非 NumPy 数组的引用对象

3*5的数组

np.full((3,5),8.8)

二、从头创建数组

(4)3*3的单位矩阵

np.eye(3)

(8)随机数构成的数组

3*3的在0~1之间分布

np.random.random((3,3))

(9)有均值、标准差的随机数构成的数组

np.random.normal(0,1,(3,3))

(10)3*3的,在[0,10)之间随机整数构成的数组

np.random.randint(0,10,size = (3,3))

(11)随机重排列

x = np.array([10,20,30,40])
np.random.permutation(x)//不修改原列表
np.random.shuffle(x)//修改原列表

(12)随机采样

  • 按指定形状采样
x = np.arange(10,25,dtype = float)
np.random.choice(x,size=(4,3))
  • 按概率采样
np.random.choice(x,size=(4,3),p=x/np.sum(x))//

三、数组的性质

x = np.random.randint(10,size=(3,4))

1.数组的形状shape

x.shape

2.数组的维度ndim

x.ndim

3.数组的大小size

x.size

四、数组的索引

1.一维数组的索引

x1 = np.arange(10)
x1[0]

2.二维数组的索引

x2[0][2]

注:numpy数组的数据类型是固定的,向一个整数数组中加一个浮点数,会向下取整

五、数组的切片

1.一维数组—跟列表一样

x1 = np.arrange(10)
x1[:3]
x1[3:]
x1[::-1]

2.多维数组—以二维数组为例

x1[范围1,范围2]