什么是Numpy
NumPy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy 支持向量处理 ndarray 对象,提高程序运算速度。
Numpy版本查看
import numpy as np
print(np.__version__)
Ndarray 对象
N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。
数组的创建
array 创建
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数说明:
object 数组或嵌套的数列
dtype 数组元素的数据类型,可选
copy 对象是否需要复制,可选
order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok 默认返回一个与基类类型一致的数组
ndmin 指定生成数组的最小维度 此选项可用,但在python3.10中无法补全。
案例:
import numpy as np
a = np.array([1,2,3],dtype=float,ndmin =2)
print(a)
结果:
C:\ProgramData\miniconda3\python.exe E:\pythonProject\test.py
[[1. 2. 3.]]
NumPy 数组属性
NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2
此处作为查阅:无需记忆
NumPy 的数组中比较重要 ndarray 对象属性有:
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
案例:
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
#打印数组的形状
print(a.shape)
print(a.size)
print(a.dtype)
结果:
C:\ProgramData\miniconda3\python.exe E:\pythonProject\test.py
(2, 3)
6
int32
#此处打印的是数组形状 行 和 列的值
基于已有数据创建数组
numpy.asarray
numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。
numpy.asarray(a, dtype = None, order = None)
参数说明:
a 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
dtype 数据类型,可选
order 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
案例:
import numpy as np
x = [(1,2,3),(4,5,6)]
print(type(x)) #此处是列表
a = np.asarray(x)
print(type(a)) #此处是ndarry
结果:
C:\ProgramData\miniconda3\python.exe E:\pythonProject\test.py
<class 'list'>
<class 'numpy.ndarray'>
从数值范围创建数组
numpy.arange
使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:
numpy.arange(start, stop, step, dtype)
根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。
参数说明:
start 起始值,默认为0
stop 终止值(不包含)
step 步长,默认为1
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。
案例:
import numpy as np
a = np.arange(10,20,2)
print(a)
结果:
C:\ProgramData\miniconda3\python.exe E:\pythonProject\test.py
[10 12 14 16 18]
数组切片
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
mport numpy as np
a = np.arange(10)
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)
输出结果为:
[2 4 6]