简介
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
安装
pip install numpy
测试是否安装成功:
>>> from numpy import *
>>> eye(4) #生成对角矩阵
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
创建数组:
导入Numpy库,并命名为np
import numpy as np
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。创建一个 ndarray 只需调用 NumPy 的 array 函数即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
名称 | 描述 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
举例:
import numpy as np
#通过列表创建一维数组
a = np.array([1, 2, 3])
print(a)
#通过列表创建二维数组
a = np.array([(1, 2, 3), (4, 5, 6)])
print(a)
结果:
[1 2 3]
[[1 2 3]
[4 5 6]]
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:
numpy.empty(shape, dtype = float, order = 'C')
shape | 数组形状 |
dtype | 数据类型,可选 |
order | 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。 |
import numpy as np
x = np.empty([3,2], dtype = int)
print (x)
numpy.zeros创建指定大小的数组,数组元素以 0 来填充。
numpy.zeros(shape, dtype = float, order = 'C')
shape | 数组形状 |
dtype | 数据类型,可选 |
order | 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组 |
import numpy as np
x = np.zeros((3, 4))
print (x)
结果:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
import numpy as np
x = np.zeros((3, 4), dtype = np.int)
print (x)
结果:
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
numpy.ones创建指定形状的数组,数组元素以 1 来填充。
import numpy as np
x = np.ones([2,2], dtype = int)
print (x)
结果:
[[1 1]
[1 1]]
numpy.full函数,创建任意大小的数组并填充任意数字
import numpy as np
x = np.full((3, 4), 2)
print (x)
结果:
[[2 2 2 2]
[2 2 2 2]
[2 2 2 2]]
numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:
numpy.arange(start, stop, step, dtype)
start | 起始值,默认为0 |
stop | 终止值(不包含) |
step | 步长,默认为1 |
dtype | 返回ndarray 的数据类型,如果没有提供,则会使用输入数据的类型。 |
import numpy as np
#创建一维等差数组
x = np.arange(5)
print (x) #结果:[0 1 2 3 4]
x = np.arange(10,20,2,dtype = float)
print (x) #结果:[10. 12. 14. 16. 18.]
#创建二维等差数组
x = np.arange(6).reshape(2, 3)
print (x)
'''
结果:
[[0 1 2]
[3 4 5]]
'''
创建单位矩阵:
import numpy as np
print(np.eye(3))
结果:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
numpy.random创建随机数组
#创建二维随机数组
import numpy as np
print(np.random.rand(2, 3))
#创建二维随机整数数组(数值小于 5)
print(np.random.randint(5, size = (2, 3)))
结果:
[[0.07372864 0.74103528 0.67281635]
[0.11108997 0.66061282 0.38864188]]
[[4 2 3]
[0 4 3]]
numpy.asarray从已有的数组创建数组
numpy.asarray(a, dtype = None, order = None)
a | 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组 |
dtype | 数据类型,可选 |
order | 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。 |
import numpy as np
#将列表转换为 ndarray
x = [1,2,3]
a = np.asarray(x)
print (a) #结果:[1 2 3]
#将元组转换为 ndarray
x = (1,2,3)
a = np.asarray(x)
print (a) #结果:[1 2 3]
#将元组列表转换为 ndarray
x = [(1,2,3),(4,5)]
a = np.asarray(x)
print (a) #结果:[(1, 2, 3) (4, 5)]
数组操作
数组运算
——未完待续
参考:https://www.numpy.org.cn/user/basics/io.html
https://www.runoob.com/numpy/numpy-tutorial.html