一.Numpy的简介
1 什么是Numpy?
Numpy(Numerrical Python)是一种用于快速处理任意维度数组的计算库.
2 为什么要用Numpy?
Numpy对于常见的数组和矩阵的处理,会比Python更快速简洁
这得益于其使用ndarray来处理数据
ndarray =n*d+array = n维度的整列
其用于容纳相同类型的多维数组 .
并行化计算使其支持向量化操作
底层用C语言编写,不受Python解释器限制,效率高于纯Python代码
二.Numpy的基本操作
1 创建数组
指定数组
import numpy as np
#引入Numpy库
a = np.array([1, 2, 3])
#创建一维数组
b = np.array([[1,2,3], [4, 5, 6]])
#创建二维数组
c = np.arange(0, 10, 2)
#创建一个从0开始到9为止,步长为2的数组(用法类似于range)
d = linspace(0,10,6)
#创建一个在[0,10]的6个等距向量
随机数组
利用Numpy里的random创建随机数组
rand(行数,列数,层数) | 随机值 |
---|---|
randn(行数,列数,层数) | 符合标准正态分布的随机值 |
randint(low,high,size) | 位于[low,high)的整数 |
random_integers(low,high,size) | 位于[low,high]的整数 |
random(size)/sample(size) /random_sample(size)/ranf(size) | 位于[0,1)的随机浮点数 |
choice(数组或int) | 位于数组内或np.arange(int)内的随机数 |
例如:
np.random.randint(0, 2, size=(2,3))
#创建一个从0开始到1为止,形状为2行3列的数组
[[0 1 0]
[1 1 0]]
#结果输出
特殊数组
zeros((x,y)) | 创建一个x行y列的数组,其值全为0 |
ones((x,y)) | 创建一个x行y列的数组,其值全为1 |
full((x,y),z) | 创建一个x行y列的数组,其值全为z |
eye(x) | 创建一个x行x列的数组,除左上对角线为1,其余值全为0 |
例如:
np.eye(3)
#创建该数组
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
#结果输出
2 获取数组信息
shape | 形状 |
size | 元素总个数 |
dtype | 元素类型 |
ndim | 维度 |
例如:
a = [[1,2]
[3,4]]
#引入数据
a.shape
#求其形状
(2,2)
#输出
3 数组的切片和索引
数组调整
reshape(数组,size) | 将数组变成指定形状 |
ravel(数组) | 二向箔 |
swapaxes(数组,a轴,b轴) | 交换数组的轴 |
moveaxis(数组,a轴,b轴) | 将数组里的a轴移至b轴 |
ps 在二维里,axis行 = 0,axis列 = 1
在三维里,axis层 = 0,axis行 = 1,axis列 = 2
数组连接
concatenate(数组1,数组2,连接轴) | 将数组按照指定轴连接 |
stack((数组1,数组2),连接轴) | 将数组按照指定轴连接 |
hstack(数组1,数组2) | 水平堆叠数组 |
vstack(数组1,数组2) | 垂直堆叠数组 |
dstack(数组1,数组2) | 深度堆叠数组 |
数组索引
a = [1,2,3,4,5]
a[1] = 2
#一维数组索引
b = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
b[1,2] = 7
#二维数组单个索引
b[[0,1],[2,3]] = [2 8]
#二维数组多个索引
b[a>1]
#布尔索引,取大于1的元素
b[(a>1),(a<10)]
#布尔索引,取1到10的元素
数组切片
与Python中对list的切片方式相同
[:a] | 从头开始到a结束 |
[a:] | 从a开始到尾 |
[::a] | 每隔a项取一个元素 |
where(a>b,x,y) | 将数组a里大于b的元素替换为x,其余变为y |
clip(a,b) | 将数组里小于a的元素替换为a,大于b的替换为b |
例如:
a = [[ 5 11 12 8 9]
[11 5 15 0 16]
[ 1 12 7 13 6]
[18 5 18 11 10]]
b = np.where(a<10,10,20)
#将数组里小于10的替换为10,其余变为20
[[10 20 20 10 10]
[20 10 20 10 20]
[10 20 10 20 10]
[20 10 20 20 20]]
#结果输出
4 数组的分析
sum(a,轴) | 按照轴将数组a的元素相加求和 |
median(a,轴) | 求数组a的中位数 |
max(a) | 求数组里的最大值 |
mean(a,轴) | 按照轴将数组a的元素相加求平均数 |
std(a,轴) | 按照轴求数组a的标准差 |
var(a,轴) | 按照轴求数组a的方差 |
ptp(a) | 求数组a的极差 |
例如:
a = [[ 5 11 12 8 9]
[11 5 15 0 16]
[ 1 12 7 13 6]
[18 5 18 11 10]]
b = py.sum(a,axis=0)
#求和
[35 33 52 32 41]
#结果输出
5 读取本地文件
import numpy as np
np.loadtxt(file_path,delimiter,dtype)
# ^ ^ ^
# 这是文件路径 分割符号 数据类型