Numpy学习

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))
相关推荐
啊阿狸不会拉杆11 小时前
《机器学习导论》第 10 章-线性判别式
人工智能·python·算法·机器学习·numpy·lda·线性判别式
brave and determined2 天前
CANN教程:NPU原生NumPy接口asnumpy详解引言
numpy
啊阿狸不会拉杆2 天前
《机器学习导论》第 5 章-多元方法
人工智能·python·算法·机器学习·numpy·matplotlib·多元方法
铁手飞鹰3 天前
[深度学习]常用的库与操作
人工智能·pytorch·python·深度学习·numpy·scikit-learn·matplotlib
啊阿狸不会拉杆3 天前
《机器学习导论》第3章 -贝叶斯决策理论
人工智能·python·算法·机器学习·numpy·深度优先·贝叶斯决策理论
林深现海4 天前
【刘二大人】PyTorch深度学习实践笔记 —— 第四集:反向传播(凝练版)
pytorch·python·numpy
断眉的派大星4 天前
NumPy库完全解析(从基础到进阶,附实战示例)
numpy
啊阿狸不会拉杆4 天前
《机器学习导论》第 1 章 - 引言
人工智能·python·算法·机器学习·ai·numpy·matplotlib
Dfreedom.4 天前
详解四大格式(PIL/OpenCV/NumPy/PyTorch)的转换原理与场景选择
图像处理·人工智能·pytorch·opencv·numpy·pillow
不懒不懒4 天前
【机器学习:下采样 VS 过采样——逻辑回归在信用卡欺诈检测中的实践】
python·numpy·scikit-learn·matplotlib·pip·futurewarning