简单 Python 快乐之旅之:Python 基础语法之 Numpy 专题

Defonds 2020-11-13 04:49:16
Python 简单 之旅 快乐



在使用 2D 数组或多维数组时,Python 的 Numpy 库非常有用。比如,在图像处理的工作中,你必须得把像素值存放在一个二维或三维数组中。
Python 仅支持一维数组。它并不支持多维数组。Numpy 是对 Python 数组的一个扩展,它不仅支持多维数组,而且还提供了基于多维数组的数学运算。

1. Pycharm 导入 Numpy 模块

在编写 Numpy 程序之前,Pycharm 需要先导入 Numpy 模块,否则你在编译执行的时候可能会遇见 No module named ‘numpy’ 的错误。详情请参考博客《PyCharm 编写 Numpy 程序时报 No module named ‘numpy‘ 错误的解决》。

2. Python Numpy 简介

默认情况下,Python 没有数组的概念,并且没有对多维数组的内置支持。
Python Numpy是一个轻松处理多维数组的库。 它具有丰富的功能集合,可以轻松处理数组。 尤其是随着Python在数据分析和科学项目中的使用量增加,numpy已成为处理数组时Python不可或缺的一部分。
Python Numpy是一个轻松处理多维数组的库。它具有丰富的功能集合可以轻松处理数组。 尤其是随着 Python 在数据分析和科学项目中的使用量增加,numpy 已成为处理数组时 Python 不可或缺的一部分。
接下来我们以一系列的 Numpy 示例来帮助你理解使用 numpy 库和 Python 编程语言。

3. Numpy - 创建一维数组

顾名思义,一维数组仅包含一维元素。或者说,Numpy 数组在形状上体现为只包含一个值的元组。
要创建一个一维数组,你可以使用 Numpy 的 array()、arange() 或 linspace() 的任意一个函数。

3.1. 使用 array() 函数创建 1D Numpy 数组

Numpy array() 函数使用一个列表的元素参数并返回一个一维数组。
在接下来的示例中我们将引入 numpy 库并使用 array() 函数来创建一个一维数组。

import numpy as np
# create numpy array
a = np.array([5, 8, 12])
print(a)

执行和输出:
创建一个一维数组.png

3.2. 使用 arange() 函数创建 1D Numpy 数组

arange() 函数以参数 start、end 作为取值范围并以参数 interval 为步长来创建一个一维 numpy 数组。
[start, start+interval, start+2*interval, … ]
接下来我们引入 numpy 库并使用 arange() 函数来创建一个一维的 numpy 数组。

import numpy as np
# create numpy array
a = np.arange(5, 14, 2)
print(a)

执行和输出:
用 arange() 函数来创建一个一维的 numpy 数组.png

可见,该数组起始于 5,以 2 为步长,直到 14 为止。

3.3. 使用 linspace() 函数创建 1D Numpy 数组

Numpy 的 linspace() 函数以参数 start、end 作为数组的始、终元素,并以参数 number 作为要创建数组的元素总个数来创建一个一维的均匀间隔的数字数组。
接下来我们引入 numpy 库并使用 linspace() 函数来创建一个一维的 numpy 数组。

import numpy as np
# create numpy array
a = np.linspace(5, 25, 4)
print(a)

执行和输出:
使用 linspace() 函数创建 1D Numpy 数组.png

3.4. 小结

在本小节中,我们通过简单详尽的示例来了解到了使用不同的内置函数来创建一个 numpy 一维数组。

4. 创建随机值的数组

4.1. numpy 中 的 shape

shape 包含于 numpy 库,是矩阵的属性,可以获取矩阵的形状,获取的结果是一个元组。
要创建有随机值的特定 shape 的 numpy 数组,使用 numpy.random.rand(),并将该数组的 shape 作为参数传递。
在本小节中,我们将来了解创建一个有随机值的 numpy 数组的例子。

4.2. numpy.random.rand() 的语法

rand() 函数的语法如下:

numpy.random.rand(d0,d1,d2,...,dN)

其中,d0、d1、d2、…是数组中每维的大小。
比如,numpy.random.rand(2,4) 意味着一个 shape 2x4 的二维数组,而 numpy.random.rand(51,4,8,3) 则意味着一个 shape 为 51x4x8x3 的思维数组。
可见,该函数返回一个指定 shape 并使用 0 到 1 之间随机浮点数填充的 numpy 数组。

4.3. 创建一个一维的随机值 numpy 数组

要创建一个随机值的一维 numpy 数组,只需将该数组大小传递给 rand() 函数即可。
在本示例中,我们将创建一个长度为 7 的一维随机值数组。

import numpy as np
# numpy array with random values
a = np.random.rand(7)
print(a)

执行和输出:
创建一个一维的随机值 numpy 数组.png

4.4. 创建一个二维的随机值 numpy 数组

要创建一个随机值的二维 numpy 数组,只需将该两维各自大小传递给 rand() 函数即可。
在本示例中,我们将创建一个 dimension-0 长度为 2,dimension-1 长度为 4 的两维随机值数组。

import numpy as np
# numpy array with random values
a = np.random.rand(2, 4)
print(a)

执行和输出:
创建一个二维的随机值 numpy 数组.png

4.5. 创建一个三维的随机值 numpy 数组

要创建一个随机值的三维 numpy 数组,只需将该三维各自大小传递给 rand() 函数即可。
在本示例中,我们将创建一个每维长度分别为 4、2、3 的三维随机值数组。

import numpy as np
# numpy array with random values
a = np.random.rand(4, 2, 3)
print(a)

执行和输出:
创建一个三维的随机值 numpy 数组.png

4.6. 小结

在本小节的示例中,我们学会了如何使用 numpy.random.rand() 来创建不同维度的随机值数组。

5. 将 Numpy 数组存放到文件 & 从文件中读取 Numpy 数组

你可以使用 numpy.save() 将 numpy 数组存放到一个文件,也可以在之后的某个时间使用 numpy.load() 将文件中的内容加载到 numpy 数组。
以下是一个代码片段示意,首先我们使用 save() 函数将数组写入文件,然后我们又使用 load() 函数将该文件加载到一个 numpy 数组。

# save array to file
numpy.save(file, array)
# load file to array
array = numpy.load(file)

5.1. 存放数组到文件

在接下来的示例中,我们将初始化一个数组,然后以 write binary 模式创建并打开一个文件,最后我们使用 numpy.save() 方法将该数组写入一个文件中。

import numpy as np
# initialize an array
arr = np.array([[[11,11,9,9],[11,0,2,0]],
[[10,14,9,14],[0,1,11,11]]])
# open a binary file in write mode
file = open("arr", "wb")
# save array to the file
np.save(file, arr)
# close the file
file.close()

执行和输出:
存放数组到文件.png

查看当前程序工作目录(即项目目录)发现有名为 arr 的文件生成:
项目目录发现有名为 arr 的文件生成.png

请注意在保存好数组到文件之后,别忘了关掉该文件。

5.2. 从文件中加载 numpy 数组

在本示例中,我们将从文件中加载一个数组。我们将在上面的保存数组到文件的基础上,继续去从该文件中读取数组。

import numpy as np
# initialize an array
arr = np.array([[[11,11,9,9],[11,0,2,0]],
[[10,14,9,14],[0,1,11,11]]])
# open a binary file in write mode
file = open("arr", "wb")
# save array to the file
np.save(file, arr)
# close the file
file.close()
# open the file in read binary mode
file = open("arr", "rb")
# read the file to numpy array
arr1 = np.load(file)
print(arr1)
# close the file
file.close()

执行和输出:
从文件中加载 numpy 数组.png

可以看到,我们已经成功从文件中读取到 numpy 数组并使用该数组生成了一个对象。

5.3. 小结

在本小节中,我们学习到了如何将一个 numpy 数组保存到文件,以及如何从文件中加载 numpy 数组到程序中的一个对象中去。

参考资料

版权声明
本文为[Defonds]所创,转载请带上原文链接,感谢
https://defonds.blog.csdn.net/article/details/106842846

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database