本文将帮助您熟悉Python中广泛使用的数组处理库NumPy。在学习之前您应该熟悉大学所学的线性代数中的矩阵,熟悉其线性运算,包含:单位矩阵、点乘、转置等。
本章内容主要包含:
- NumPy介绍
- NumPy数组与它的属性
- 多种方式创建数组
NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy是一个通用的阵列处理包。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。
它是使用Python进行科学计算的基础包。它包含各种功能,包括以下重要功能:
除了明显的科学用途外,NumPy还可以用作通用数据的高效多维容器。可以使用Numpy定义任意数据类型,允许NumPy无缝且快速地与各种数据库集成。
Mac和Linux的用户可以通过pip命令安装NumPy:
pip install numpy
请使用python3版本进行安装。安装成功后如下图:
Windows没有任何类似于linux或mac中的软件包管理器。请从此处下载NumPy的预构建Windows安装程序(根据您的系统配置和Python版本)。
然后手动安装软件包。
NumPy中主要对象是多维数组。
示例:
[[ 1, 2, 3],[ 4, 2, 5]]
下面演示一下NumPy中数组的最基本的属性。
import numpy as np
# 创建一个数组
arr = np.array([[1, 2, 3], [4, 2, 5]])
# 输出数组的类型
print("数组的类型: ", type(arr))
# 轴的数量或维度的数量
print("维度的数量: ", arr.ndim)
# 数组的维度,对于矩阵,n行m列
print("数组的维度: ", arr.shape)
# 数组元素的总个数
print("数组元素的总个数: ", arr.size)
# ndarray对象的元素类型
print("ndarray对象的元素类型: ", arr.dtype)
输出:
数组的类型: <class 'numpy.ndarray'>
维度的数量: 2
数组的维度: (2, 3)
数组元素的总个数: 6
ndarray对象的元素类型: int64
有多种方法可以在NumPy中创建数组。
**注意:**创建数组时可以显式定义数组类型。
import numpy as np
# 使用float类型的数组数据创建数组
a = np.array([[1, 2, 4], [5, 8, 7]], dtype='float')
print("使用float类型的数组数据创建数组:\n", a)
# 元组数据类型创建数组
b = np.array((1, 3, 2))
print("\n元组数据类型创建数组:\n", b)
# 3X4的全零创建数组
c = np.zeros((3, 4))
print("\n3X4的全零创建数组:\n", c)
# 复数创建数组
d = np.full((3, 3), 6, dtype='complex')
print("\n复数创建数组:\n", d)
# 随机数创建数组
e = np.random.random((2, 2))
print("\n随机数创建数组:\n", e)
# 以0~30步长为5的整数创建数组
f = np.arange(0, 30, 5)
print("\n以0~30步长为5的整数创建数组:\n", f)
# 0~5之间的等差的10个值创建数组
g = np.linspace(0, 5, 10)
print("\n0~5之间的等差的10个值创建数组:\n", g)
# 将3X4的数组转化为2X2X3的数组
arr = np.array([[1, 2, 3, 4], [5, 2, 4, 2], [1, 2, 0, 1]])
newarr = arr.reshape(2, 2, 3)
print("\n将3X4的数组转化为2X2X3的数组:\n", arr)
print("转化后:\n", newarr)
# 将数组转化为一维的数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
flarr = arr.flatten()
print("\n将数组转化为一维的数组:\n", arr)
print("转化后:\n", flarr)
输出:
使用float类型的数组数据创建数组:
[[1. 2. 4.]
[5. 8. 7.]]
元组数据类型创建数组:
[1 3 2]
3X4的全零创建数组:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
复数创建数组:
[[6.+0.j 6.+0.j 6.+0.j]
[6.+0.j 6.+0.j 6.+0.j]
[6.+0.j 6.+0.j 6.+0.j]]
随机数创建数组:
[[0.66694019 0.6944897 ]
[0.11728555 0.21673665]]
以0~30步长为5的整数创建数组:
[ 0 5 10 15 20 25]
0~5之间的等差的10个值创建数组:
[0. 0.55555556 1.11111111 1.66666667 2.22222222 2.77777778
3.33333333 3.88888889 4.44444444 5. ]
将3X4的数组转化为2X2X3的数组:
[[1 2 3 4]
[5 2 4 2]
[1 2 0 1]]
转化后:
[[[1 2 3]
[4 5 2]]
[[4 2 1]
[2 0 1]]]
将数组转化为一维的数组:
[[1 2 3]
[4 5 6]]
转化后:
[1 2 3 4 5 6]
本章是对NumPy进行一个入门学习,主要掌握了通过NumPy创建数组的多种方式,以及它的常用属性。对于NumPy库其它常见的语法请继续学习下一章的内容。
若有问题,欢迎联系作者(微信:lixu1770105)。