1 | import numpy as np |
Numpy库入门
数组对象:ndarry (np.array
)
ndarray对象的属性
属性 | 说明 |
---|---|
.ndim | 秩,即轴的数量或维度的数量 |
.shape | 尺度,对于矩阵(n,m) |
.size | 元素个数,n*m |
.dtype | 元素类型 |
.itemsize | 元素大小(字节) |
ndarray数组的元素类型
数据类型 | 说明 |
---|---|
bool | |
intc | 同c的int,为int32/int64 |
intp | 用于索引的整数,同c中的ssize_t,为int32/int64 |
int8 | [-128,127] |
int16 | [-32768,32767] |
int32 | [-,-1] |
int64 | [-,-1] |
uint8 | [0,255] |
uint16 | [0,65535] |
uint32 | [0,-1] |
uint64 | [0,-1] |
float16 | 16位半精度浮点数:1位符号位,5位指数,10位尾数 |
float32 | 32位半精度浮点数:1位符号位,8位指数,23位尾数 |
float64 | 64位半精度浮点数:1位符号位,11位指数,52位尾数 |
complex64 | 复数,实部和虚部都是32位浮点数 |
complex128 | 复数,实部和虚部都是64位浮点数 |
浮点数:
复数:实部(.real)+j虚部(.imag)
数据应同质
ndarray数组的创建方法
- 从Python中的列表、元组等类型创建ndarray数组
x = np.array(list/tuple)
- 使用NumPy中函数创建ndarray数组
函数 | 说明 |
---|---|
np.arrange(n) | 同range() |
np.ones(shape) | 全是1 |
np.zeros(shape) | 全是0 |
np.full(shape,val) | 全是val |
np.eye(n) | 单位矩阵 |
np.ones_like(a) | 像a一样全是1 |
np.zeros_like(a) | 像a一样全是0 |
np.full_like(a,val) | 像a一样全是val |
- 使用NumPy中其他函数创建ndarray数组
函数 | 说明 |
---|---|
np.linspace() | 根据起止数据等间隔填充 |
np.concatenate() | 合并多个数组 |
1 | np.linspace(1,10,4) |
1 | array([ 1., 4., 7., 10.]) |
ndarray数组变换
- 元素类型变换
1 | new_a=a.astype(new_type) |
- 维度变换
函数 | 说明 |
---|---|
.reshape(shape) | 不改变原数组 |
.resize(shape) | 改变原数组 |
.swapaxes(ax1,ax2) | 调换两个维度 |
.flatten() | 降为一维 |
数组的操作
- 数组的索引
a[-1,1,2]
- 数组的切片
a[:,1:3,:]
ndarray数组的运算
数据存储与展示
数据的CSV文件存取:
np.savetxt(frame, array, fmt=’%.18e’, delimiter=None)
• frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
• array : 存入文件的数组
• fmt : 写入文件的格式,例如:%d %.2f %.18e
• delimiter : 分割字符串,默认是任何空格
np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
• frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
• dtype : 数据类型,可选
• delimiter : 分割字符串,默认是任何空格
• unpack : 如果True,读入属性将分别写入不同变量
CSV只能有效存储一维和二维数组
np.savetxt() np.loadtxt()只能有效存取一维和二维数组
多维数据的存取
a.tofile(frame, sep=’’, format=’%s’)
• frame : 文件、字符串
• sep : 数据分割字符串,如果是空串,写入文件为二进制
• format : 写入数据的格式
np.fromfile(frame, dtype=float, count=‐1, sep=’’)
• frame : 文件、字符串
• dtype : 读取的数据类型
• count : 读入元素个数,‐1表示读入整个文件
• sep : 数据分割字符串,如果是空串,写入文件为二进制
该方法需要读取时知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()需要配合使用,可以通过元数据文件来存储额外信息。
NumPy的便捷文件存取
np.save(fname, array) 或 np.savez(fname, array)
• fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
• array : 数组变量
np.load(fname)
• fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
NumPy函数
- NumPy的随机数函数:
np.random.*
- NumPy的统计函数:
np.*
- NumPy的梯度函数:
np.gradient(f)
计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
实例1 图像的手绘效果(PIL库)
pip install pillow
from PIL import Imagine
1 | im = np.array(Image.open("example.jpg")) |
图像是一个三维数组,维度分别是高度、宽度和像素RGB值
1 | from PIL import Image |
Matplotlib库入门
import matplotlib.pyplot as plt
plt.plot(x, y, format_string, **kwargs)
∙ x : X轴数据,列表或数组,可选
∙ y : Y轴数据,列表或数组
∙ format_string: 控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成
∙ **kwargs : 第二组或更多(x,y,format_string)
当绘制多条曲线时,各条曲线的x不能省略
plt.savefig()将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
plt.subplot(3,2,4)及plt.subplot(324)在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域
文本显示: