Python操作Numpy模块库

简介: Python操作Numpy模块库

14天学习训练营导师课程:

杨鑫《Python 自学编程基础》

杨鑫《 Python 网络爬虫基础》

杨鑫《 Scrapy 爬虫框架实战和项目管理》


杨老师推荐自学Python的网站

w3schools

传送门

geeksforgeeks

传送门

realpython

传送门

引用杨老师说的:
中文的这里不推荐,因为很多机构的翻译水品参差不齐,直接看英文的自己学吧,这个能快速的提升你的技能水平,
不光是编程,还有英语。
你可能会问为什么不推荐书籍,因为书籍的时效性太低了,可能出版之后版本都换了好几轮了,
很多里面的代码都跑不通,具体为什么里也不会给你说,所以直接看网站的教程是最好的选择。

1.Numpy介绍

numpy官方文档介绍

Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展

Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作

2.Numpy安装

  1. window电脑点击win键+R,输入:cmd

2.安装 numpy,pip 命令安装 ,我们使用豆瓣的镜像源来安装

pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
• 1

3.导包

import numpy as np

3.Numpy模块练习

numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。

3.1 创建数组

创建一维、二维、三维ndarray对象

# @Time     : 2022/11/24 19:25
# @Author   : hyh
# @File     : Numpy模块练习.py
# @Software : PyCharm
import numpy as np
# np.array? 相当于pycharm的ctrl+鼠标左键
# 创建一维的ndarray对象
arr = np.array([1, 2, 3])
print(arr, type(arr))
# 创建二维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6]]))
# 创建三维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))

执行结果:

3.2 获取数组

由于numpy数组是多维的,对于二维的数组而言,numpy数组就是既有行又有列。

注意:对于numpy我们一般多讨论二维的数组。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
# 获取numpy数组的行和列构成的数组
print(arr.shape)
# 获取numpy数组的行
print(arr.shape[0])
# 获取numpy数组的列
print(arr.shape[1])

执行结果:

[[1 2 3]
 [4 5 6]]
获取numpy数组的行和列构成的数组
(2, 3)
获取numpy数组的行
2
获取numpy数组的列
3

3.3 切割数组

切分numpy数组类似于列表的切割,但是与列表的切割不同的是,numpy数组的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

# @Time     : 2022/11/24 19:45
# @Author   : hyh
# @File     : 切割numpy数组.py
# @Software : PyCharm
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
print('取所有元素')
# 取所有元素
print(arr[:, :])
print('取第一行的所有元素')
# 取第一行的所有元素
print(arr[:1, :])
print('取第一列的所有元素')
# 取第一列的所有元素
print(arr[:, :1])
print('取第一列的所有元素')
# 取第一列的所有元素
print(arr[(0, 1, 2), 0])
print('取第一行第一列的元素')
# 取第一行第一列的元素
print(arr[(0, 1, 2), 0])
print('取第一行第一列的元素')
# 取第一行第一列的元素
print(arr[0, 0])
print('取大于5的元素,返回一个数组')
# 取大于5的元素,返回一个数组
print(arr[arr > 5])
print('numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组')
# numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
print(arr > 5)

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/切割numpy数组.py
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取所有元素
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取第一行的所有元素
[[1 2 3 4]]
取第一列的所有元素
[[1]
 [5]
 [9]]
取第一列的所有元素
[1 5 9]
取第一行第一列的元素
[1 5 9]
取第一行第一列的元素
1
取大于5的元素,返回一个数组
[ 6  7  8  9 10 11 12]
numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
[[False False False False]
 [False  True  True  True]
 [ True  True  True  True]]
Process finished with exit code 0

3.4 替换数组

numpy数组元素的替换,类似于列表元素的替换,并且numpy数组也是一个可变类型的数据,即如果对numpy数组进行替换操作,会修改原numpy数组的元素,所以下面我们用.copy()方法举例numpy数组元素的替换。

# @Time     : 2022/11/24 19:53
# @Author   : hyh
# @File     : numpy数组元素替换.py
# @Software : PyCharm
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
print('取第一行的所有元素,并且让第一行的元素都为0')
# 取第一行的所有元素,并且让第一行的元素都为0
arr1 = arr.copy()
arr1[:1, :] = 0
print(arr1)
print('取所有大于5的元素,并且让大于5的元素为0')
# 取所有大于5的元素,并且让大于5的元素为0
arr2 = arr.copy()
arr2[arr > 5] = 0
print(arr2)
print('对numpy数组清零')
# 对numpy数组清零
arr3 = arr.copy()
arr3[:, :] = 0
print(arr3)

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组元素替换.py
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取第一行的所有元素,并且让第一行的元素都为0
[[ 0  0  0  0]
 [ 5  6  7  8]
 [ 9 10 11 12]]
取所有大于5的元素,并且让大于5的元素为0
[[1 2 3 4]
 [5 0 0 0]
 [0 0 0 0]]
对numpy数组清零
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
Process finished with exit code 0

3.5 合并数组

numpy数组的合并

# @Time     : 2022/11/24 20:39
# @Author   : hyh
# @File     : numpy数组合并.py
# @Software : PyCharm
import numpy as np
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr1)
arr2 = np.array([[7, 8], [9, 10], [11, 12]])
print(arr2)
print('合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的')
# 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
print(np.hstack((arr1, arr2)))
print('合并两个numpy数组,其中axis=1表示合并两个numpy数组的行')
# 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
print(np.concatenate((arr1, arr2), axis=1))
print('合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的')
# 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
print(np.vstack((arr1, arr2)))
print('合并两个numpy数组,其中axis=0表示合并两个numpy数组的列')
# 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
print(np.concatenate((arr1, arr2), axis=0))

执行结果:

"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组合并.py
[[1 2]
 [3 4]
 [5 6]]
[[ 7  8]
 [ 9 10]
 [11 12]]
合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]
合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]
合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]
合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]
 [11 12]]
Process finished with exit code 0

3.6 numpy数组的常用属性

属性 解释
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的数据类型
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换
相关文章
|
3天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
16 0
|
2天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
18 7
|
3天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
13 3
|
3天前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
13 3
|
6天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
23 5
|
4天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
4天前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
13 2
|
4天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
16 1
|
2天前
|
文字识别 自然语言处理 API
Python中的文字识别利器:pytesseract库
`pytesseract` 是一个基于 Google Tesseract-OCR 引擎的 Python 库,能够从图像中提取文字,支持多种语言,易于使用且兼容性强。本文介绍了 `pytesseract` 的安装、基本功能、高级特性和实际应用场景,帮助读者快速掌握 OCR 技术。
21 0
|
5天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
10 0