参考Numpy - 知识点总结(五)
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
ndarray 对象是用于存放同类型元素的多维数组。
NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。
在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。
比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。
所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。
而轴的数量——秩,就是数组的维数。
很多时候可以声明 axis。
axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;
axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
通过在轴(axis=0)上的坐标和轴(axis=1)上的坐标来确定它们的位置。
[[1 2 3]
[4 5 6]
[7 8 9]]
import numpy as np
a = np.arange(24)
print(a)
print (a.ndim) # a 现只有一个维度
# 现在调整其大小
b = a.reshape(4,6) # b 现在拥有二个维度
print(b)
print (b.ndim)
print(b.ndim) # 秩,即轴的数量或维度的数量
print(b.shape) # 数组的维度,对于矩阵,n行m列
print(b.size) # 数组元素的总个数,相当于.shape中n*m的值
print(b.dtype) # 对象中元素类型
print(b.itemsize) # 对象中每个元素的大小,以字节为单位
print(b.flags) # 对象的内存信息
print(b.real) # 元素的实部
print(b.imag) # 元素的虚部
numpy.reshape(arr, newshape, order=‘C’) 默认按行
import numpy as np
a = np.arange(8)
print(a)
b = a.reshape(4,2)
print(b)
a.reshape() # 不改变数据的条件下修改形状
b.flat # 数组元素迭代器
b.flatten() # 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
b.ravel() # 返回展开数组
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.concatenate((a,b))) # 沿轴0连接两个数组
print(np.concatenate((a,b),axis = 1)) # 沿轴1连接两个数组
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.resize(a, (3,2)) # 返回指定大小的新数组,原数组不变
a.resize(3,2) # 改变原数组为指定大小的新数组,
a = np.array([[1,2,3],[4,5,6]])
print(np.append(a, [7,8,9])) # 在数组的末尾添加值,原数组不变。
print(np.append(a, [[7,8,9]],axis = 0)) # 在数组的末尾添加值,沿轴0添加元素,原数组不变
b = np.insert(a,3,[11,12]) # 未传递Axis参数,在插入之前输入数组会被展开,原数组不变
print(np.delete(a,5)) # 删除指定索引处的值
u,indices = np.unique(a, return_index=True) # 去除数组中的重复元素
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print(a)
print(np.amin(a)) # 用于计算数组中的元素沿指定轴的最小值。
print(np.amax(a)) # 用于计算数组中的元素沿指定轴的最大值。
print(np.ptp(a)) # 函数计算数组中元素最大值与最小值的差(最大值-最小值)。
print(np.percentile(a,60)) # 统计百分位数。
print(np.median(a)) # 计算中位数。
print(np.mean(a)) # 算术平均值。
print(np.average(a)) # 加权平均值。
print(np.std(a)) # 标准差。
print(np.var(a)) # 方差。
import numpy as np
a = np.array([[3.,7,5],[8,4,3],[2,4,9]])
print(a)
print(np.amin(a)) # 用于计算数组中的元素沿指定轴的最小值。
print(np.amax(a)) # 用于计算数组中的元素沿指定轴的最大值。
print(np.ptp(a)) # 函数计算数组中元素最大值与最小值的差(最大值-最小值)。
print(np.percentile(a,60)) # 统计百分位数。
print(np.median(a)) # 计算中位数。
print(np.mean(a)) # 算术平均值。
print(np.average(a)) # 加权平均值。
print(np.std(a)) # 标准差。
print(np.var(a)) # 方差。
对数组执行向量化字符串操作。
这些函数在字符数组类(numpy.char)中定义。
import numpy as np
print(np.char.add(["he","wor"],["llo","ld"])) # 对两个数组的逐个字符串元素进行连接
print(np.char.multiply('Runoob',3)) # 返回按元素多重连接后的字符串
print(np.char.center('Runoob', 20,fillchar = '*')) # 将字符串居中,并使用指定字符在左侧和右侧进行填充。
print(np.char.capitalize('runoob')) # 将字符串第一个字母转换为大写
print(np.char.title('i like runoob')) # 将字符串的每个单词的第一个字母转换为大写
print(np.char.lower(['RUNOOB','GOOGLE'])) # 转换为小写,操作数组
print(np.char.lower('RUNOOB')) # 转换为小写,操作字符串
print(np.char.upper(['runoob','google'])) # 转换为大写,操作数组
print(np.char.upper('runoob')) # 转换为大写,操作字符串
print(np.char.split ('i like runoob?')) # 对字符串进行分割,分隔符默认为空格
print(np.char.split ('www.runoob.com', sep = '.')) # 对字符串进行分割,指定分隔符
print(np.char.splitlines('i\nlike runoob?')) # 以换行符分割
print(np.char.strip('ashok arunooba','a')) # 移除元素开头或者结尾处的特定字符
print(np.char.strip(['arunooba','admin','java'],'a')) # 移除元素开头或者结尾处的特定字符
print(np.char.join(':','runoob')) # 拼接,操作字符串
print(np.char.join([':','-'],['runoob','google'])) # 拼接,指定多个分隔符操作数组元素
print(np.char.replace ('i like runoob', 'oo', 'cc')) # 使用新字符串替换字符串中的所有子字符串
a = np.char.encode('runoob') # 默认编码是 utf-8
print(a)
print(np.char.decode(a)) # 解码
import numpy as np
a = np.array([3, 1, 2])
print(a)
print(np.sort(a)) # 返回输入数组的排序副本
print(np.argsort(a)) # 返回的是数组值从小到大的索引值
print(np.argmax(a)) # 返回最大元素的索引
print(np.argmin(a)) # 返回最小元素的索引
print(np.nonzero(a)) # 返回非零元素的索引
print(np.where(a>1)) # 返回输入数组中满足给定条件的元素的索引
print(np.extract(a>1, a)) # 根据某个条件从数组中抽取元素,返回满条件的元素
(1)直接报错
a = 10
b = 0
c = a/b
print(c)
import numpy as np
a = np.array([0])
b = np.array([0])
c= a/b
print(c)
print(c<10,c>10,c==10)
输出警告信息
RuntimeWarning: invalid value encountered in true_divide
import numpy as np
a = np.array([10])
b = np.array([0])
c= a/b
print(c)
print(c<10,c>10,c==10)
输出警告信息RuntimeWarning: divide by zero encountered in true_divide。
(4)忽略警告的设置
处理runtimewarning:invalid value encountered in divide。
(1)忽略掉异常信息
import numpy as np
np.seterr(divide=‘ignore’, invalid=‘ignore’)
a = np.array([1.0,2.0])
b = np.array([0])
print(a/b)