官方手册:https://numpy.org/doc/stable/user/quickstart.html
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
极客教程:https://geek-docs.com/numpy/numpy-tutorials
NumPy是Python语言的一个扩充程序库。支持大量高级的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
一、创建数组
| 对象 | 说明 |
|---|---|
| numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) | 创建数组。【object 数组或嵌套的数列。dtype 数组元素的数据类型,可选。copy 对象是否需要复制,可选。order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)。subok 默认返回一个与基类类型一致的数组。ndmin 指定生成数组的最小维度。 |
| numpy.empty(shape, dtype = float, order = ‘C’) | 创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组。创建空数组,空数据中的值并不为0,而是未初始化的随机值。【shape数组形状(行数,列数)。dtype数据类型,可选。order代表在计算机内存中的存储元素的顺序,"C"行优先(用于 C 的行数组),"F"列优先(用于 FORTRAN 的列数组)。】 |
| numpy.empty_like(a, dtype=None, order=‘K’, subok=True, shape=None) | 用于创建一个与给定数组具有相同形状的数组,空数据中的值并不为0,而是未初始化的随机值。 |
| numpy.zeros(shape, dtype = float, order = ‘C’) | 创建指定大小的数组,数组元素以 0 来填充。 |
| numpy.zeros_like(a, dtype=None, order=‘K’, subok=True, shape=None) | 用于创建一个与给定数组具有相同形状的数组,数组元素以 0 来填充。【a给定要创建相同形状的数组。dtype创建的数组的数据类型。order数组在内存中的存储顺序,可选值为 ‘C’(按行优先)或 ‘F’(按列优先),默认为 ‘K’(保留输入数组的存储顺序)。subok是否允许返回子类,如果为 True,则返回一个子类对象,否则返回一个与 a 数组具有相同数据类型和存储顺序的数组。shape创建的数组的形状,如果不指定,则默认为 a 数组的形状。】numpy.zeros 可以直接指定要创建的数组的形状,而 numpy.zeros_like 则是创建一个与给定数组具有相同形状的数组,只是根据传入的ndarray数组的shape来创建所有元素为0的数组,并不是拷贝源数组中的数据。 |
| numpy.ones(shape, dtype = None, order = ‘C’) | 创建指定形状的数组,数组元素以 1 来填充。 |
| numpy.ones_like(a, dtype=None, order=‘K’, subok=True, shape=None) | 用于创建一个与给定数组具有相同形状的数组,数组元素以 1 来填充。 |
| numpy.asarray(a, dtype = None, order = None) | 从已有的数组创建数组,类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。【a 任意形式的输入参数,可以是列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组。dtype数据类型,可选。order可选"C"/“F”。】 # x = [1,2,3] 创建列表 a = np.asarray(x,dtype = float) 将列表转换为 ndarray |
| numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) | 用于实现动态数组,接受 buffer (buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b)输入参数,以流的形式读入转化成 ndarray 对象。【buffer 可以是任意对象,会以流的形式读入。dtype数组的数据类型。count 读取的数据数量,默认为-1,读取所有数据。offset读取的起始位置,默认为0。】 |
| numpy.fromiter(iterable, dtype, count=-1) | 从可迭代对象中建立 ndarray 对象,返回一维数组。【iterable 可迭代对象。dtype 返回数组的数据类型。count 读取的数据数量,默认为-1,读取所有数据。】 |
| numpy.arange(start, stop, step, dtype) | 从数值范围创建数组,使用 arange 函数创建数值范围并返回 ndarray 对象。根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。【start 起始值,默认为0。stop 终止值(不包含)。step 步长,默认为1。dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。】 #x = np.arange(5) 生成 0 到 4 长度为 5 的数组。np.array(range(10)相当于np.arange(10)。 |
| numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) | 用于创建一个等差数列构成的一维数组。【start 序列的起始值。stop 序列的终止值,如果endpoint为true,该值包含于数列中。num 要生成的等步长的样本数量,默认为50。endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。dtype ndarray 的数据类型。】# a = np.linspace(10, 20, 5, endpoint = False)等差数列数组为[10. 12. 14. 16. 18.] |
| numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) | 用于创建一个于等比数列。【start 序列的起始值为base** start。stop序列的终止值为base** stop。num 要生成的等步长的样本数量,默认为50。endpoint 该值为 true 时,数列中中包含stop值,反之不包含,默认是True。base对数 log 的底数。dtype ndarray 的数据类型。】 |
| numpy.eys(N) | 创建一个N*N的对角矩阵数组,对角线为1,其余为0。 |
| numpy.random.rand(d0,d1,…,dn) | 根据 给定维度生成[0,1)之间的数据,包含0,不包含1。【dn表格每个维度。返回值为指定维度的array。】# np.random.rand(4,2) # shape: 4*2 |
| numpy.random.randn(d0,d1,…,dn) | randn函数返回一个或一组样本,具有标准正态分布。【dn表格每个维度。返回值为指定维度的array。当没有参数时,返回单个数据。】标准正态分布standard normal distribution又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。 |
| numpy.random.randint(low, high=None, size=None, dtype=’l’) | 返回随机整数,范围区间为[low,high),包含low,不包含high。【low为最小值。high为最大值,没有填写时,默认生成随机数的范围是[0,low)。size为数组维度大小。dtype为数据类型,默认的数据类型是np.int。】#np.random.randint(1,size=5) 返回[0,1)之间的整数,array([0, 0, 0, 0, 0])所以只有0。 |
| numpy.random.random_sample(size=None) | 生成[0,1)之间的浮点数 |
| numpy.random.random(size=None) | 生成[0,1)之间的浮点数 |
| numpy.random.ranf(size=None) | 生成[0,1)之间的浮点数 |
| numpy.random.sample(size=None) | 生成[0,1)之间的浮点数 |
| numpy.random.choice(a, size=None, replace=True, p=None) | 从给定的一维数组中生成随机数。【 a为一维数组类似数据或整数,a为整数时对应的一维数组为np.arange(a)。size为数组维度。p为数组中的数据出现的概率,参数p的长度与参数a的长度需要一致,p里的数据之和应为1。当replace为False时,生成的随机数不能有重复的数值。】 |
| numpy.random.seed() | 使得随机数据可预测。当设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数。# np.random.seed(0) |
| numpy.random.permutation(x) | 返回排列值的随机序列。产生一个随机序列,对一个序列 x 进行随机排序,如果 x 是一个多维数组,它只会按照第一个索引洗牌。 |
| hist, bin_edges = numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None) | 直方图生成函数。【a待统计数据的数组,输入图像, 必选输入数据,直方图是在展平的数组上计算的。bin指定统计的区间个数,如是int则定义给定范围内的 equal-width bins 的数量(默认为 10),主要是将灰度值空间分为多少分进行灰度值统计,为 int 或标量序列或 str。range是一个长度为2的元组,表示统计范围的最小值和最大值,默认值None,(浮点数/浮点数),bin 的下限和上限范围,如果没有提供(a.min(), a.max()),超出范围的值将被忽略,范围的第一个元素必须小于或等于第二个元素,主要表明的是需要统计的灰度值取值范围,表示范围由数据的范围决定。normed布尔型,可选。weights为数组的每个元素指定了权值,histogram()会对区间中数组所对应的权值进行求和,数组可选。density为True时,返回每个区间的概率密度(结果就是概率的值密度在 bin 处的函数,归一化使得不可缺少的在范围内为 1);为False,返回每个区间中元素的个数(结果将包含每个 bin 中的样本数)。】hist :直方图的值。bin_edges:dtype 浮点数组。 |
| np.diff(arr,n,axis= ) | 数组中元素的减法。【arr进行操作的数组对象。n执行减法的次数,默认值是1。】np.diff(np.array([1,3,10]))#对[1,3,10]数组计算后的结果是[2 7],显然3-1=2,10-3=7。np.diff(m,2)#[5],7-2=5 |
二、数组类型属性
NumPy数组的维数称为秩(rank),即轴的数量或维度的数量,一维数组的秩为 1,二维数组的秩为2,以此类推。
a = np.array([[1,2,3],[4,5,6]])
| 函数 | 说明 |
|---|---|
| numpy.dtype(object, align, copy) | 数据类型对象,是用来描述与数组对应的内存区域如何使用。【object 要转换为的数据类型对象。align 如果为 true,填充字段使其类似 C 的结构体。copy 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用】 |
| numpy.astype(int) | 数据类型转换。numpy中的数据类型转换,不能直接改原数据的dtype,只能用函数astype()。# c=a.astype(int)用 astype(int) 得到整数,并且不改变数组长度 |
| ndarray.shape | 数组的维度,对于矩阵,n 行 m 列。【a.shape查看矩阵或者数组的维数,返回一个包含数组维度的元组(行数,列数),这个元组的长度就是维度的数目,即 ndim 属性(秩);一个二维数组,ndarray.shape[0]表示行数,a.shape[1]表示列数。也可以用于调整数组大小,a.shape = (3,2)相当于a.reshape(3,2)】 |
| ndarray.ndim | 返回数组的维数(dim是英文dimension维度的缩写)。【如一维数组的ndim值为1, 二维数组的ndim值为2,以此类推。】 |
| ndarray.itemsize | 返回数组中每个元素的字节大小,以字节为单位。如一个元素类型为float64的数组itemsize属性值为8(float64占用64个bits,每个字节长度为8,所以64/8,占用8个字节)。一个元素类型为complex32的数组itemsize属性为4(32/8)。 |
| ndarray.flags | 返回 ndarray 对象的内存信息。 |
| ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值 |
| ndarray.dtype | ndarray 对象的元素类型 |
| ndarray.real | ndarray元素的实部 |
| ndarray.imag | ndarray 元素的虚部 |
| ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
常用 NumPy 基本类型
| 名称 | 描述 |
|---|---|
| bool_ | 布尔型数据类型(True 或者 False) |
| int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
| intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
| intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 | 字节(-128 to 127),可使用字符串 i1 代替 |
| int16 | 整数(-32768 to 32767),可使用字符串i2代替 |
| int32 | 整数(-2147483648 to 2147483647),可使用字符串i4代替 |
| int64 | 整数(-9223372036854775808 to 9223372036854775807) ,可使用字符串i8代替 |
| uint8 | 无符号整数(0 to 255) |
| uint16 | 无符号整数(0 to 65535) |
| uint32 | 无符号整数(0 to 4294967295) |
| uint64 | 无符号整数(0 to 18446744073709551615) |
| float_ | float64 类型的简写 |
| float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
| float32 | 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
| float64 | 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
| complex_ | complex128 类型的简写,即 128 位复数 |
| complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
| complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
字节顺序是通过对数据类型预先设定”<“或”>”来决定的。”<“意味着小端法(最高有效字节在最前面的方式称为大端法)。”>”意味着大端法(最低有效字节在最前面的方式成为小端法)。
三、切片和索引
| 函数 | 说明 |
|---|---|
| slice(start,stop,step) | 从原数组中切割出一个新数组。【基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数切割】#slice(2,7,2)相当于a[2:7:2] 从索引 2 开始到索引 7 停止,间隔为2。 |
| [start:stop:step] | 来进行切片操作。# [2]返回与该索引相对应的单个元素。 [2:]从该索引开始以后的所有项都将被提取。 [2:7]提取两个索引(不包括停止索引)之间的项。a[1,…]第2行元素。a[…,1:] 第2列及剩下的所有元素。 |
| 整数数组索引 | 使用一个数组来访问另一个数组的元素。这个数组中的每个元素都是目标数组中某个维度上的索引值。 # x = np.array([[1, 2], [3, 4], [5, 6]]) 提取x[[0,1,2], [0,1,0]] 获取数组中 (0,0),(1,1) 和 (2,0) 位置处的元素。 |
| 布尔索引 | 通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。# 获取大于 5 的元素 x[x > 5] # 使用 ~(取补运算符)来过滤 NaN。a[~np.isnan(a)] |
| 花式索引 | 利用整数数组进行索引,根据索引数组的值作为目标数组的某个轴的下标来取值。花式索引跟切片不一样,它总是将数据复制到新数组中。【对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素,如果目标是二维数组,那么就是对应下标的行。】# 一维数组只有一个轴 axis = 0,所以一维数组就在 axis = 0 这个轴上取值。x[[0, 6]] 使用花式索引0和6的值。 |
高级索引指的是使用整数数组、布尔数组或者其他序列来访问数组的元素。相比于基本索引,高级索引可以访问到数组中的任意元素,并且可以用来对数组进行复杂的操作和修改。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
四、操作处理数组
a = np.arange(9).reshape(3,3) #二维的 ndarray数组
b= np.arange(8).reshape(2,2,2) # 三维的 ndarray数组
| 函数 | 说明 |
|---|---|
| numpy.nditer(op, flags=[‘multi_index’], op_flags=[‘readwrite’]) | 迭代数组,灵活访问一个或者多个数组元素的方式,迭代器最基本的任务的可以完成对数组元素的访问。【op为ndarray 或者是序列。flags控制迭代器行为,为字符串序列,c_index 可以跟踪 C 顺序的索引;f_index 可以跟踪 Fortran 顺序的索引;multi_index 每次迭代可以跟踪一种索引类型;external_loop 给出的值是具有多个值的一维数组,而不是零维数组。op_flags读写模式设置,为字符串列表, readonly默认待迭代遍历的数组为只读对象,为了在遍历数组的同时,实现对数组元素值得修改,必须指定op_flags=[‘readwrite’] 或 writeonly 的模式。】 # for x in np.nditer(a, order=‘F’):Fortran order,即是列序优先;for x in np.nditer(a.T, order=‘C’):C order,即是行序优先相当于np.nditer(a.T.copy(order=‘C’)); |
| numpy.reshape(arr, newshape, order=‘C’) | 修改数组形状,不改变数据的条件下修改形状。【arr要修改形状的数组。newshape整数或者整数数组,新的形状应当兼容原有形状。order在内存中的出现顺序,'C’按行,‘F’ 按列,‘A’ 原顺序,‘k’ 元素。】 |
| numpy.ndarray.flat | 返回数组元素迭代器,该属性是一个数组元素迭代器。# for element in a.flat: 对数组中每个元素都进行处理 |
| numpy.ndarray.flatten(order=‘C’) | 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组。# a.flatten(order = ‘F’)以 F 风格顺序展开的数组 |
| numpy.ravel(a, order=‘C’) | 返回展开数组,返回的是数组视图,修改会影响原始数组。 |
| numpy.transpose(arr, axes) | 翻转数组,对换数组的维度。【arr要操作的数组。axes整数列表,对应维度,通常所有维度都会对换。】# np.transpose(a)对换数组 |
| ndarray.T | 转置数组,和 self.transpose() 相同。# a.T 原始数组的转置 |
| numpy.rollaxis(arr, axis, start) | 向后滚动指定的轴到一个特定位置。【arr数组。axis要向后滚动的轴,其它轴的相对位置不会改变。start默认为零,表示完整的滚动,会滚动到特定位置。】# np.rollaxis(b,2)将轴 2 滚动到轴 0,宽度到深度即坐标从变成b[1,1,0]到 [0, 1, 1];np.rollaxis(a,2,1)将轴 2 滚动到轴 1,宽度到高度即坐标从变成b[1,1,0]到 [1, 0, 1] |
| numpy.swapaxes(arr, axis1, axis2) | 对换数组的两个轴。【arr输入的数组。axis1对应第一个轴的整数。axis2对应第二个轴的整数。】# np.swapaxes(b, 2, 0)交换轴 0 深度方向 到轴 2宽度方向 |
| numpy.broadcast(x,y) | 修改数组维度,产生模仿广播的对象,该对象封装了将一个数组广播到另一个数组的结果。【x,y两个数组维数、且每一维的长度相同时,进行简单的计算,以上不相同时,触发广播机制。】# 对 y 广播 x:b = np.broadcast(x,y) ;广播对象的形状:b.shape |
| numpy.broadcast_to(array, shape, subok) | 将数组广播到新形状。它在原始数组上返回只读视图。 它通常不连续,如果新形状不符合 NumPy 的广播规则,该函数可能会抛出ValueError。 |
| numpy.expand_dims(arr, axis) | 通过在指定位置插入新的轴来扩展数组形状。【arr输入数组。axis新轴插入的位置。】 |
| numpy.squeeze(arr, axis) | 从数组的形状中删除一维条目。【arr输入数组。axis整数或整数元组,用于选择形状中一维条目的子集。】 |
| numpy.concatenate((a1, a2, …), axis) | 连接数组,沿指定轴连接相同形状的两个或多个数组。【a1, a2, …相同类型的数组。axis沿着它连接数组的轴,默认为 0。】 |
| numpy.stack(arrays, axis) | 沿着新的轴加入一系列数组。【arrays相同形状的数组序列。axis返回数组中的轴,输入数组沿着它来堆叠。】 |
| numpy.hstack(arrays) | 水平堆叠序列中的数组(列方向), 是 numpy.stack 函数的变体,它通过水平堆叠来生成数组。 |
| numpy.vstack(arrays) | 竖直堆叠序列中的数组(行方向),是 numpy.stack 函数的变体,它通过垂直堆叠来生成数组。 |
| numpy.split(ary, indices_or_sections, axis) | 分割数组,沿特定的轴将一个数组分割为多个子数组。【ary被分割的数组。indices_or_sections如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)。axis设置沿着哪个方向进行切分,默认为 0,横向切分,即水平方向;为 1 时,纵向切分,即竖直方向。】 |
| numpy.hsplit | 将一个数组水平分割为多个子数组(按列),通过指定要返回的相同形状的数组数量来拆分原数组。 |
| numpy.vsplit | 将一个数组垂直分割为多个子数组(按行)。 |
| numpy.resize(arr, shape) | 数组元素的添加与删除,返回指定形状的新数组,如果新数组大小大于原始大小,则包含原始数组中的元素的副本。【arr要修改大小的数组。shape返回数组的新形状。 |
| numpy.append(arr, values, axis=None) | 将值添加到数组末尾,追加操作会分配整个数组,并把原来的数组复制到新数组中,返回的始终是一个一维数组。 此外,输入数组的维度必须匹配否则将生成ValueError。【arr输入数组。values要向arr添加的值,需要和arr形状相同(除了要添加的轴)。axis默认为 None,当axis无定义时,是横向加成,返回总是为一维数组;当axis有定义的时候,分别为0和1的时候(列数要相同),当axis为1时,数组是加在右边(行数要相同)。】 |
| numpy.insert(arr, obj, values, axis) | 沿指定轴将值插入到指定下标之前,如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。 此外,如果未提供轴,则输入数组会被展开。【arr输入数组。obj在其之前插入值的索引。values:要插入的值。axis沿着它插入的轴,如果未提供,则输入数组会被展开。】 |
| Numpy.delete(arr, obj, axis) | 删掉某个轴的子数组,并返回删除后的新数组,与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。【arr输入数组。obj可以被切片,整数或者整数数组,表明要从输入数组删除的子数组。axis沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开。】 |
| numpy.unique(arr, return_index, return_inverse, return_counts) | 查找数组内的唯一元素,用于去除数组中的重复元素。【arr输入数组,如果不是一维数组则会展开。return_index如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储。return_inverse如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储。return_counts如果为true,返回去重数组中的元素在原数组中的出现次数。】 |
| ndarray.view() | 视图或浅拷贝,创建一个新的数组对象,该方法创建的新数组的维数变化不会改变原始数据的维数。【简单的赋值不会创建数组对象的副本,使用原始数组的相同id()来访问时返回 Python 对象的通用标识符,一个数组的任何变化都反映在另一个数组上。使用切片创建视图修改数据会影响到原始数组。】 |
| ndarray.copy() | 副本或深拷贝,创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。 |

五、运算函数
1. 数学运算函数
| 函数 | 描述 |
|---|---|
| numpy.bitwise_and() | 位运算,对数组元素执行位与操作。也可以使用 "&"操作符进行计算。 |
| numpy.bitwise_or() | 对数组元素执行位或操作。也可以使用 `" |
| numpy.invert() | 对数组中整数进行按位取反运算,即 0 变成 1,1 变成 0。也可以使用 "~"操作符进行计算。 |
| numpy.left_shift() | 向左移动二进制表示的位。 |
| numpy.right_shift() | 向右移动二进制表示的位。 |
| numpy.sin()、numpy.cos()、numpy.tan() | 数学函数,三角函数 |
| numpy.arcsin()、numpy.arccos()、numpy.arctan() | 返回给定角度的 sin,cos 和 tan 的反三角函数。结果可以通过 numpy.degrees() 函数将弧度转换为角度。 |
| numpy.around(a,decimals) | 返回指定数字的四舍五入值。【a数组。decimals舍入的小数位数, 默认值为0,如果为负,整数将四舍五入到小数点左侧的位置。】 |
| numpy.floor() | 返回小于或者等于指定表达式的最大整数,即向下取整。 |
| numpy.ceil() | 返回大于或者等于指定表达式的最小整数,即向上取整。 |
| numpy.add()、numpy.subtract()、numpy.multiply() 、numpy.divide() | 算术函数,简单的加减乘除,数组必须具有相同的形状或符合数组广播规则。 |
| numpy.reciprocal() | 返回参数逐元素的倒数,如 1/4 倒数为 4/1。 |
| numpy.power() | 将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。 |
| numpy.mod() | 计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。 |
| numpy.remainder() | 计算输入数组中相应元素的相除后的余数。 |
| numpy.amin(a, axis) | 统计函数,用于计算数组中的元素沿指定轴的最小值。 |
| numpy.amax(a, axis) | 用于计算数组中的元素沿指定轴的最大值。 |
| numpy.ptp(a, axis) | 计算数组中元素最大值与最小值的差(最大值 - 最小值)。 |
| numpy.percentile(a, q, axis) | 百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。【a输入数组。q要计算的百分位数,在 0 ~ 100 之间。axis沿着它计算百分位数的轴。】 |
| numpy.median(a, axis) | 用于计算数组 a 中元素的中位数(中值) |
| numpy.mean(a, axis) | 返回数组中元素的算术平均值。如果提供了轴,则沿其计算。算术平均值是沿轴的元素的总和除以元素的数量。 |
| numpy.average(a,axis,weights,returned) | 根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。【axis轴参数如果没有指定轴,则数组会被展开。不指定权重weights时相当于 mean 函数。如果 returned 参数设为 true,则返回权重的和。】# np.average([1,2,3, 4],weights = [4,3,2,1], returned = True) 返回权重的和(2.0, 10.0)。数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算:加权平均值 = (14+23+32+41)/(4+3+2+1)=2。 |
| numpy.std() | 标准差是一组数据平均值分散程度的一种度量。std = sqrt(mean((x - x.mean())**2)) 标准差是方差的算术平方根。# np.std([1,2,3,4]) 数组是 [1,2,3,4]其平均值为 2.5,因此差的平方是 [2.25,0.25,0.25,2.25],并且再求其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。 |
| numpy.var() | 统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,mean((x - x.mean())** 2)标准差是方差的平方根。# np.var([1,2,3,4]) 结果为1.25 |
numpy.matlib.empty(shape, dtype, order) | 矩阵库(Matrix),返回一个新的矩阵,填充为随机数据。【shape定义新矩阵形状的整数或整数元组。Dtype可选,数据类型。order行序优先C或者列序优先F。】矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。 |
| numpy.matlib.zeros((2,2)) | 创建一个以 0 填充的矩阵。 |
| numpy.matlib.ones((2,2)) | 创建一个以 1 填充的矩阵。 |
| numpy.matlib.eye(n, M,k, dtype) | 返回一个矩阵,对角线元素为 1,其他位置为零。【n返回矩阵的行数。M返回矩阵的列数,默认为 n。k对角线的索引。dtype数据类型。】# np.matlib.eye(n = 3, M = 4, k = 0, dtype = float) |
| numpy.matlib.identity() | 返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。# np.matlib.identity(5, dtype = float)大小为 5,类型位浮点型 |
| numpy.matlib.rand(3,3) | 创建一个给定大小的矩阵,数据是随机填充的。 |
| numpy.matrix(‘1,2;3,4’) ,numpy.asarray(i) ,numpy.asmatrix (j) | 矩阵总是二维的,而 ndarray 是一个 n 维数组。 两个对象都是可互换的。 |
2. 排序、条件筛选函数
排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。
| 种类 | 速度 | 最坏情况 | 工作空间 | 稳定性 |
|---|---|---|---|---|
| ‘quicksort’(快速排序) | 1 | O(n^2) | 0 | 否 |
| ‘mergesort’(归并排序) | 2 | O(n*log(n)) | ~n/2 | 是 |
| ‘heapsort’(堆排序) | 3 | O(n*log(n)) | 0 | 否 |
| 函数 | 描述 |
|---|---|
| numpy.sort(a, axis, kind, order) | 返回输入数组的排序副本。【a要排序的数组。axis沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序。kind默认为’quicksort’(快速排序)。order如果数组包含字段,则是要排序的字段。】 |
| numpy.argsort() | 返回的是数组值从小到大的索引值。 |
| numpy.lexsort() | 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。 |
| numpy.msort(a) | 数组按第一个轴排序,返回排序后的数组副本。np.msort(a) 相等于 np.sort(a, axis=0)。 |
| numpy.sort_complex(a) | 对复数按照先实部后虚部的顺序进行排序。 |
| numpy.partition(a, kth[, axis, kind, order]) | 指定一个数,对数组进行分区排序。#np.partition(a, (1, 3)) 返回array([1, 2, 3, 4]),将数组 a 中所有元素(包括重复元素)从小到大排列,小于 1 的在前面,大于 3 的在后面,1和3之间的在中间 |
| numpy.argpartition(a, kth[, axis, kind, order]) | 可以通过关键字 kind 指定算法沿着指定轴对数组进行分区。# arr[np.argpartition(arr, 2)[2]]找到数组第 3 小(index=2)的值,arr[np.argpartition(arr, -2)[-2]]找到数组第 2 大(index=-2)的值,分别通过下标 [2] 和 [-2] 取得 |
| numpy.argmax() | 沿给定轴返回最大元素的索引。 |
| numpy.argmin() | 沿给定轴返回最小元素的索引。 |
| numpy.nonzero() | 返回输入数组中非零元素的索引。 |
| numpy.where() | 返回输入数组中满足给定条件的元素的索引。 |
| numpy.extract() | 根据某个条件从数组中抽取元素,返回满条件的元素。 |
3. 字符数组类 numpy.char
以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。
| 函数 | 描述 |
|---|---|
| numpy.char.add() | 对两个数组的逐个字符串元素进行连接 |
| numpy.char.multiply() | 返回按元素多重连接后的字符串 |
| numpy.char.center() | 居中字符串 |
| numpy.char.capitalize() | 将字符串第一个字母转换为大写 |
| numpy.char.title() | 将字符串的每个单词的第一个字母转换为大写 |
| numpy.char.lower() | 数组元素转换为小写 |
| numpy.char.upper() | 数组元素转换为大写 |
| numpy.char.split() | 指定分隔符对字符串进行分割,并返回数组列表。默认情况下,分隔符为空格。# np.char.split (‘www.runoob.com’, sep = ‘.’) |
| numpy.char.splitlines() | 返回元素中的行列表,以换行符分割。\n,\r,\r\n 都可用作换行符。 |
| numpy.char.strip() | 移除元素开头或者结尾处的特定字符 |
| numpy.char.join() | 通过指定分隔符来连接数组中的元素。#np.char.join([‘:’,‘-’],[‘runoob’,‘google’])得['r:u:n:o:o:b' 'g-o-o-g-l-e'] |
| numpy.char.replace() | 使用新字符串替换字符串中的所有子字符串 |
| numpy.char.decode() | 数组元素依次调用str.decode解码。 |
| numpy.char.encode() | 数组元素依次调用str.encode,默认编码是 utf-8,可以使用标准 Python 库中的编解码器。 |
1716

被折叠的 条评论
为什么被折叠?



