Numpy基本操作

NumPy是Python中科学计算的基础软件包。
它是一个提供多了维数组对象,多种派生对象(如:掩码数组、矩阵)以及用于快速操作数组的函数及API;
它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。

2 Numpy数组

NumPy数组在创建时具有固定的大小, 更改ndarray的大小将创建一个新数组并删除原来的数组。
NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。
NumPy数组有助于对大量数据进行高级数学和其他类型的操作。

3 np基本操作

3.1 np常用数据类型

int 8/16/32/64
float 16/32/64
complex64/128 (64指实部虚部皆32位浮点数)
object(该类型与MATLAB cell相似)

3.2 np数组属性

ndim/ shape/ size/ dtype/ itemsize/ real/ imag

秩/n行m列/元素总个数/ 元素类型/ 元素大小(字节)/元素实部/ 元素虚部

3.3 创建np数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

np.array(list/tuple,dtype)
# 指定始末和步长生成数组
np.arange(min,max,step,dtype)
# 全空与全0/1数组
np.empty(shape,dtype)
np.zeros(shape,dtype)
np.ones(shape,dtype)
# 随机数组
np.random.rand(n) #生成0,1之间的n个随机数
np.random.randn(n)#生成0,1之间的n个随机数,服从正态分布
np.random.randint(low, high, size) #返回随机的整数
np.random.random_integers(low, high, size) #返回随机的整数
np.random.shuffle(a) #类似洗牌,打乱顺序,a变了
np.random.permutation(a) #打乱顺序,返回一个随机排列,a不变

3.4 np切片与索引

1
2
3
4
5
6
7
8
9
10
11
12
# 单个元素
a[i,j]
# 指定始末和步长
a[i:j] a[i:j:step]
# 指定某行某列
a[i,:]/a[:,j]
# 从第i+1个元素至末尾
a[i:]
# 数组索引[i1,j1],...
a[[i1,i2,...],[j1,j2,...]]
# 布尔索引
a[T/F]

3.5 np数组操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 修改形状大专栏  Numpy基本操作n>
np.reshape(a,[m,n])
# 转置
np.transpose(a)/ a.T
# 拼接
np.concatenate((a1,a2,...),axis=0/1) #axis控制纵横
np.hstack((a1,a2,...)) #左右
np.vstack((a1,a2,...)) #上下
# 修剪:x>max->max,x<min->min,中间元素不变
np.clip(a,min,max)
# 分块
np.split(a,num,axis=0/1) #均匀分块:num分割块数,axis控制横纵
np.array_split(a,num,axis=0/1) #支持非均匀分块
# 排序:axis列行,kind排序方法,快排/归并/堆排
np.sort(a,axis=0/1,kind)
np.argsort(a) #返回的是数组值从小到大的索引值。

3.6 np统计/算术函数

1
2
3
4
5
6
7
# 统计函数
np.amax/amin/median/mean/var/ptp(def:max-min)
# 三角函数
np.sin/cos/tan/arcsin/arccos/arctan
np.degree #弧度->角度
# 取整 decimals舍入的小数位数
np.around(a,decimals)/floor/ceil

3.7 np线性代数

1
2
3
4
5
6
7
8
# 矩阵相乘
np.dot(A,B) #A*B是对应元素相乘,dot是矩阵相乘
# 点积
np.vdot(A,B) #A*B所有元素之和
# 行列式
np.linalg.det()
# 矩阵的逆
np.linalg.inv()

3.8 np输入输出

1
2
3
4
5
6
7
8
9
# 保存单个数组
numpy.save(file, arr) #后缀’.npy‘
# 保存多个数组(args: 要保存的数组;kwds: 要保存的数组使用关键字名称)
numpy.savez(file, *args, **kwds)
# 加载
np.load(file)
# 以文本形式保存或加载
np.loadtxt(FILENAME, dtype=int, delimiter=' ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

参考资料

Numpy 中文文档
莫烦Numpy&pandas讲解
菜鸟教程

原文地址:https://www.cnblogs.com/lijianming180/p/12370800.html