1:Numpy简洁
- NumPy(Numerical Python)是Python数据分析必不可少的第三方库
- NumPy的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力。
- 本身是由C语言开发,是个很基础的扩展,NumPy被Python其它科学计算包作为基础包,因此理解np的数据类型对python数据分析十分重要。
- NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多
2:Numpy的属性
ndim:获取数组的维度
shape:获取数组的形状
size:获取数组的元素个数
dtype:获取数组元素的数据类型
type:查看数组的类型
itemsize:获取数组中元素的大小
3:Numpy的ndarray的创建
ndarray介绍
- NumPy数组是一个多维的数组对象(矩阵),称为**ndarray(N-Dimensional Array)**
- *具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点
- 注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。
1:array()的功能是将一个列表转换为数组
2:zeros() /ones()/empty()
函数zeros创建一个全是0的数组,
函数ones创建一个全1的数组,
函数empty创建一个内容随机并且依赖于内存状态的数组。
3:arange(),类似 python 的 range() ,创建一个一维 ndarray 数组。
arange(x,y,z...) x:起始值
y:结束值(不含) z:步长
4:matrix(), 是 ndarray 的子类,只能生成 2 维的矩阵
注意: mat和matrix()功能一样
5:rand()/randint()/uniform()
rand()的功能是生成一个指定形状的随机浮点数数组,范围默认是0-1之间
randint()的功能是生成一个指定形状的随机整数数组,范围需要指定,形状用size指定
uniform()的功能是生成一个指定形状的随机浮点数数组,范围需要指定,形状用size指定
6:astype()的功能是修改数组的数据类型,注意:返回新的
7:logspace()的功能是生成一个等比数组
(x,y,n,base): x起始幂,y结束幂,n个数默认是50个,base基础值默认是10
8:linspace()的功能是生成一个等差数组
(x,y,n): x起始值,y结束值,n个数默认是50个
4:Numpy的内置函数
1:基本函数
python
# 基本函数如下
np.ceil(): 向上最接近的整数,参数是 number 或 array
np.floor(): 向下最接近的整数,参数是 number 或 array
np.rint(): 四舍五入,参数是 number 或 array
np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
np.multiply(): 元素相乘,参数是 number 或 array
np.divide(): 元素相除,参数是 number 或 array
np.abs():元素的绝对值,参数是 number 或 array
np.where(condition, x, y): 三元运算符,x if condition else y
# 注意: 需要注意multiply/divide 如果是两个ndarray进行运算 shape必须一致
2:统计函数
python
np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array
# 多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按列统计,值为1则按行统计。
3:比较函数
python
np.any(): 至少有一个元素满足指定条件,返回True
假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等,我们需要使用any方法。
np.all(): 所有的元素满足指定条件,返回True
假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等,我们需要使用all方法,
4:去重函数
python
np.unique():找到唯一值并返回排序结果,类似于Python的set集合
5:排序函数
python
numpy.sort(数组):函数排序, 返回排序后的副本
数组.sort():在原数据上进行修改
4:Numpy运算
1:基本运算
数组的算数运算: 是按照元素的。新的数组被创建并且被结果填充。
python
# 示例代码
import numpy as np
a = np.array([20, 30, 40, 50])
b = np.arange(4)
c = a - b
print("数组a:", a)
print("数组b:", b)
print("数组运算a-b:", c)

两个ndarray, 一个是arr_a 另一个是arr_b
它们俩之间进行 arr_a + arr_b 或 arr_a - arr_b 或 arr_a * arr_b 这样计算的前提是 shape相同
计算的时候, 位置对应的元素 进行 加减乘除的计算, 计算之后得到的结果的shape 跟arr_a /arr_b 一样
2:矩阵运算
`arr_a.dot(arr_b) 前提` arr_a 列数 = arr_b行数
场景1

python
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[1, 2, 3], [4, 5, 6]])
print(a * b)
print(np.multiply(a, b))

场景2


python
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[6, 23], [-1, 7], [8, 9]])
print(x)
print(y)
print(x.dot(y))
print(np.dot(x, y))
