numpy是Python中的一个运算速度非常快的一个数学库,主要用于对多维数组执行计算。
导入方式
import numpy as np
一、创建N维数组ndarray
可用“dtype = float”等指定数据类型
可选参数order='C’行优先/'F’列优先
1.array() 将列表转换为数组
a = [[1,2,3],[4,5,6]]
b = np.array(a) #将列表转换为数组
print("a =",a)
print("b =",b)
2.zeros() 全0数组
数组的数据类型dtype默认为float
a = np.zeros((4,5)) #生成4行5列全0数组
print("a =",a)
3.ones() 全1数组
数组的数据类型dtype默认为float
a = np.ones((4,5)) #生成4行5列全1数组
print("a =",a)
4.eye() 单位矩阵
数组的数据类型dtype默认为float
a = np.eye(4) #生成4行4列的单位矩阵
print("a =",a)
5.empty() 生成接近于0的数组
数组的数据类型dtype默认为float
a = np.empty((4,5)) #生成4行5列的接近于0的数组
print("a =",a)
6.full() 生成指定形状指定值的完整数组
a = np.full((5, 10), 1) #生成5行10列的值为1的完整数组
print("a =",a)
7.arange() 生成有序的数列或数组,range的numpy版
省略开始则默认从0开始,省略步长则默认步长为1
a = np.arange(1,10,2) #生成一个从1开始到10结束(不包括结束值),步长为2的数列
b = np.arange(10) #生成一个从0开始到10结束(不包括结束值),步长为1的数列
print("a =",a)
print("b =",b)
8.linspace() 生成有序的数列或数组,类似arange(),第三个参数为数组长度
a = np.linspace(1,10,20) #生成一个从1开始到10结束(包括结束值),总共有20个数的等距的数列
print("a =",a)
9.修改数组的数据类型
a = np.ones(6)
print("a =",a)
a = np.int8(a)
print("a =",a)
b = np.array([1, -2, 3, -4], dtype='int8')
print("b =",b)
b = np.float32(b)
print("b =",b)
二、常用属性
1.T 数组的转置
a = [[1,2,3],[4,5,6]]
b = np.array(a) #将列表转换为数组
c = b.T #将数组b转置,即行列互换
print("a =",a)
print("b =",b)
print("c =",c)
2.dtype 数组元素的数据类型
a = np.zeros(10) #生成一个1行10列的全0数组
print("a =",a)
print("a的数据类型为",a.dtype)
3.size 数组元素的个数
a = np.eye(4) #生成4行4列的单位矩阵
print("a =",a)
print("a的元素个数为",a.size) #输出为16,即a中有16个元素
4.ndim 数组的维数
a = np.eye(4) #生成4行4列的单位矩阵
print("a =",a)
print("a的维数是",a.ndim) #输出为2,即a是一个二维数组
5.shape 数组的形状
a = [[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]
b = np.array(a) #将列表转换为数组
print("a =",a)
print("b =",b)
print("b的维数是",b.ndim) #输出为3,即b是一个三维数组
print("b各维度的长度分别为",b.shape) #输出为(2,2,3),即a是一个形状为2层2行3列的三维数组
6.flatten 返回一个折叠成一维的数组
A = np.array([[1,2],[3,4],[5,6]])
B = A.flatten() # 行优先
C = A.flatten('A') # 行优先
D = A.flatten('F') # 列优先
print("A =",A)
print("B =",B)
print("C =",C)
print("D =",D)
三、索引
1.整数序号索引:数组名[索引序号]
正值索引:从左往右,第一个序号是0,最后一个序号是长度减1
负值索引:从右往左,第一个序号是-1,最后一个序号是长度的负数
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
b = a[1]
c = a[1,1]
d = a[1,1,1]
print("a =",a)
print("b =",b)
print("c =",c)
print("d =",d)
2.切片索引
[开始索引:结束索引:步长]
切片包括开始索引位置的元素,但不包括结束索引位置的元素
步长可以为正整数(从左往右切),也可以为负整数(从右往左切,数组逆序排列)
省略开始索引则默认从第一个序号开始(包括),省略结束索引则默认到最后一个序号结束(包括),省略步长则默认步长为1
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])
b = a[:1]
c = a[1,1:]
d = a[1,1,::2]
e = a[1,1,::-1]
f = a[1,1,1