Numpy 高级(三)

简介: 本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy 高级,学习之前需要学习:NumPy入门

3.2 where函数

import numpy as np 
arr1 = np.array([9, 7, 9, 9, 6]) 
arr2 = np.array([2, 1, 2, 0, 6]) 
cnt = np.array([False, False, True, False, True]) 
# 根据条件进行筛选
display(np.where(cnt,arr1,arr2)) # True选择arr1,False选择arr2的值
arr3 = np.random.randint(0, 30, 20)
display(arr3)
# 如果 arr3 的元素值小于15就输出,否则输出-15
display(np.where(arr3 < 15, arr3, -15))

image.png

3.3排序方法

🚩NumPy中还提供了排序方法,排序方法是就地排序,即直接改变原数组:

arr.sort()、np.sort()、arr.argsort()

import numpy as np 
arr = np.array([14, 9, 13, 13, 18, 18, 18, 7, 5, 11]) 
# 直接让原数组从小到大进行排序
arr.sort() 
display(arr)
# 返回深拷贝排序结果 
np.sort(arr)
arr = np.array([14, 9, 13, 13, 18, 18, 18, 7, 5, 11]) 
display(arr)
# 返回从小到大排序的索引
display(arr.argsort()) 

image.png

3.4 集合运算函数

A = np.array([6, 8, 9, 1, 4])
B = np.array([3, 6, 5, 7, 1]) 
# 计算交集
display(np.intersect1d(A, B))
# 计算并集
display(np.union1d(A, B))
# 计算差集
display(np.setdiff1d(A, B))

image.png

3.5数学和统计函数

🚩我们挑几个常用的函数进行代码演示,剩余的函数有兴趣的读者可以自行查阅用法自己演示。min、max、mean、median、sum、std、var、cumsum、cumprod、argmin、argmax、argwhere、cov、corrcoef

import numpy as np 
arr1 = np.array([5, 90, 87, 35, 23,  6, 39, 39, 99, 79, 72, 94, 97, 13, 84]) 
# 计算数组中的最小值
display(arr1.min())
# 计算数组中的最大值的索引
display(arr1.argmax())
# 返回大于40的元素的索引
display(np.argwhere(arr1 > 40))
# 计算数组的累加和
display(np.cumsum(arr1))
arr2 = np.random.randint(0, 10,size = (4, 5))
display(arr2)
# 计算列的平均值
display(arr2.mean(axis = 0))
# 计算行的平均值
display(arr2.mean(axis = 1))
# 协方差矩阵
display(np.cov(arr2, rowvar = True))
# 相关性系数
display(np.corrcoef(arr2, rowvar = True))

15.png

4.矩阵运算

4.1 矩阵的乘法

#矩阵的乘积(点乘)
A = np.array([[2, 1, 7], 
              [6, 3, 4]]) # shape(2, 3) 
B = np.array([[4, 3], 
              [0, 9], 
              [-5, -8]]) # shape(3, 2) 
# 第一种方法 
display(np.dot(A,B))
# 第二种方法
display(A @ B) # 符号 @ 表示矩阵乘积运算
# 第三种方法
display(A.dot(B))

4.2 矩阵的其他运算

np.set_printoptions(suppress = True) # 不使用科学计数法
from numpy.linalg import inv,det,eig,qr,svd 
A = np.array([[1, 2, 3], 
              [2, 3, 1], 
              [3, 2, 1]]) # shape(3, 3) 
# 求逆矩阵
B = inv(A)  # B 就是 A 的逆矩阵
display(B)
display(A.dot(B))
# 求矩阵的行列式
display(det(A))

image.png

5.训练场

5.1 给定一个4维矩阵,如何得到最后两维的和?(提示,指定axis进行计算)

import numpy as np
arr = np.random.randint(0, 10, size = (2, 3, 4, 5))
display(arr)
display(arr.sum(axis = 0))  # 第0维的数据进行加和
display(arr.sum(axis = 1))  # 第1维的数据进行加和
display(arr.sum(axis = -1)) # 最后一维的数据进行加和
# 最后两维的和
# 写法一:
display(arr.sum(axis = (-1, -2)))
# 写法二:
display(arr.sum(axis = (2, 3)))

16.png

5.2 给定数组[1, 2, 3, 4, 5],如何得到在这个数组的每个元素之间插入3个0后的新数组?

import numpy as np
arr1 = np.arange(1, 6)
display(arr1)
# 每个元素之间插入3个0,共插入3*4=12个0
# 再加上初始的5个值,共需要17个位置
# 创建一个长度为17的全部是0的数组
arr2 = np.zeros(shape = 17, dtype = np.int16)
display(arr2)
# 有间隔的,每4个取一个,取出数据并进行替换
arr2[::4] = arr1
display(arr2)

image.png

5.3 给定一个二维矩阵(5行4列),如何交换其中两行的元素(提示:任意调整,花式索引)?

import numpy as np
arr = np.random.randint(0, 100, size = (5, 4))
display(arr)
# 使用花式索引进行交换
arr = arr[[0, 2, 1, 3, 4]]
display(arr)

image.png

目录
相关文章
|
3月前
|
存储 机器学习/深度学习 Python
NumPy 高级教程——存储和加载数据
NumPy 高级教程——存储和加载数据 【1月更文挑战第1篇】
90 3
NumPy 高级教程——存储和加载数据
|
3月前
|
分布式计算 并行计算 编译器
NumPy 高级教程——并行计算
NumPy 高级教程——并行计算【1月更文挑战第3篇】
337 26
|
3月前
|
Ubuntu Linux 计算机视觉
NumPy 秘籍中文第二版:二、高级索引和数组概念
NumPy 秘籍中文第二版:二、高级索引和数组概念
63 0
|
1月前
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
25 0
|
1月前
|
数据采集 机器学习/深度学习 数据处理
数据科学家的秘密武器:Pandas与NumPy高级应用实战指南
【7月更文挑战第14天】Pandas与NumPy在数据科学中扮演关键角色。Pandas的DataFrame和Series提供高效数据处理,如数据清洗、转换,而NumPy则以ndarray为基础进行数值计算和矩阵操作。两者结合,从数据预处理到数值分析,形成强大工具组合。示例展示了填充缺失值、类型转换、矩阵乘法、标准化等操作,体现其在实际项目中的协同效用。掌握这两者,能提升数据科学家的效能和分析深度。**
25 0
|
1月前
|
数据处理 Python
数据科学进阶之路:Pandas与NumPy高级操作详解与实战演练
【7月更文挑战第13天】探索数据科学:Pandas与NumPy提升效率的高级技巧** - Pandas的`query`, `loc`和`groupby`用于复杂筛选和分组聚合,例如筛选2023年销售额超1000的记录并按类别计总销售额。 - NumPy的广播和向量化运算加速大规模数据处理,如快速计算两个大数组的元素级乘积。 - Pandas DataFrame基于NumPy,二者协同加速数据处理,如将DataFrame列转换为NumPy数组进行标准化再回写,避免链式赋值。 掌握这些高级操作,实现数据科学项目的效率飞跃。
39 0
|
1月前
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
29 0
|
3月前
|
存储 数据采集 数据处理
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
57 1
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
|
3月前
|
机器学习/深度学习 搜索推荐 数据挖掘
矩阵运算与分解:NumPy的高级应用
【4月更文挑战第17天】NumPy是Python数值计算基础库,支持高效矩阵运算和分解。本文介绍了NumPy的矩阵加减、乘法以及特征值、奇异值和Cholesky分解,并展示了它们在机器学习(如线性回归、PCA)、图像处理和科学计算中的应用。通过掌握这些高级功能,用户能更有效地处理矩阵数据,解决各种计算和分析任务。
|
3月前
|
数据处理 索引 Python
数组的连接与分割:NumPy的高级操作技巧
【4月更文挑战第17天】NumPy提供了丰富的功能来进行数组的连接与分割操作。通过使用`np.concatenate`、`np.stack`、`np.hstack`、`np.vstack`以及`np.split`、`np.hsplit`、`np.vsplit`等函数,我们可以轻松地对数组进行各种形式的连接和分割。此外,利用NumPy的广播机制和掩码操作,我们还可以实现更加灵活的数组处理。掌握这些高级操作技巧将使我们能够更高效地处理大规模数据集,并在数值计算和数据处理方面取得更好的效果。