目录
NumPy - Ndarray 对象
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
- object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
- dtype 数组的所需数据类型,可选。
- copy 可选,默认为true,对象是否被复制。
- order C(按行)、F(按列)或A(任意,默认)。
- subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
- ndimin 指定返回数组的最小维数。
NumPy数据类型
数据类型对象 (dtype)
numpy.dtype(object, align, copy)
- Object:被转换为数据类型的对象。
- Align:如果为true,则向字段添加间隔,使其类似 C 的结构体。
- Copy: 生成dtype对象的新副本,如果为flase,结果是内建数据类型对象的引用。
NumPy数组属性
- ndarray.shape:这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。
- ndarray.reshape:NumPy 也提供了reshape函数来调整数组大小。
- ndarray.ndim:这一数组属性返回数组的维数。
- numpy.itemsize:这一数组属性返回数组中每个元素的字节单位长度。
- numpy.flags:ndarray对象拥有以下属性。这个函数返回了它们的当前值。
- C_CONTIGUOUS (C):数组位于单一的、C 风格的连续区段内。
- F_CONTIGUOUS (F):数组位于单一的、Fortran 风格的连续区段内。
- OWNDATA (O):数组的内存从其它对象处借用。
- WRITEABLE (W):数据区域可写入。 将它设置为flase会锁定数据,使其只读。
- ALIGNED (A) 数据和任何元素会为硬件适当对齐。
- UPDATEIFCOPY (U) 这个数组是另一数组的副本。当这个数组释放时,源数组会由这个数组中的元素更新。
NumPy数组创建例程
numpy.empty(shape, dtype = float, order = 'C')
它创建指定形状和dtype
的未初始化数组。
- Shape:空数组的形状,整数或整数元组
- Dtype:所需的输出数组类型,可选
- Order:'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组
numpy.zeros(shape, dtype = float, order = 'C')
返回特定大小,以 0 填充的新数组。
- Shape:空数组的形状,整数或整数元组
- Dtype:所需的输出数组类型,可选。
- Order:'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组。
numpy.ones(shape, dtype = None, order = 'C')
返回特定大小,以 1 填充的新数组。
- Shape:空数组的形状,整数或整数元组。
- Dtype:所需的输出数组类型,可选。
- Order:'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组。
NumPy - 来自现有数据的数组
numpy.asarray(a, dtype = None, order = None)
此函数类似于numpy.array,除了它有较少的参数。 这个例程对于将 Python 序列转换为ndarray非常有用。
- a:任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表。
- dtype:通常,输入数据的类型会应用到返回的ndarray。
- order:'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组。
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都用作参数来返回ndarray。
- buffer 任何暴露缓冲区借口的对象。
- dtype 返回数组的数据类型,默认为float。
- count 需要读取的数据数量,默认为-1,读取所有数据。
- offset 需要读取的起始位置,默认为0。
numpy.fromiter(iterable, dtype, count = -1)
此函数从任何可迭代对象构建一个ndarray对象,返回一个新的一维数组。
- iterable:任何可迭代对象。
- dtype:返回数组的数据类型。
- count:需要读取的数据数量,默认为-1,读取所有数据。
NumPy - 来自数值范围的数组
numpy.arange(start, stop, step, dtype)
这个函数返回ndarray对象,包含给定范围内的等间隔值。
- start:范围的起始值,默认为0。
- stop:范围的终止值(不包含)。
- step:两个值的间隔,默认为1。
- dtype:返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。
numpy.linspace(start, stop, num, endpoint, retstep, dtype)
此函数类似于arange()
函数。 在此函数中,指定了范围之间的均匀间隔数量,而不是步长。
- start:序列的起始值。
- stop:序列的终止值,如果endpoint为true,该值包含于序列中。
- num:要生成的等间隔样例数量,默认为50。
- endpoint:序列中是否包含stop值,默认为ture。
- retstep:如果为true,返回样例,以及连续数字之间的步长。
- dtype:输出ndarray的数据类型。
numpy.logscale(start, stop, num, endpoint, base, dtype)
此函数返回一个ndarray对象,其中包含在对数刻度上均匀分布的数字。 刻度的开始和结束端点是某个底数的幂,通常为 10。
- start:起始值是base ** start。
- stop:终止值是base ** stop。
- num:范围内的数值数量,默认为50。
- endpoint:如果为true,终止值包含在输出数组当中。
- base:对数空间的底数,默认为10;
- dtype:输出数组的数据类型,如果没有提供,则取决于其它参数。
NumPy - 切片和索引
切片仅为视图
NumPy - 高级索引
NumPy - 广播
NumPy - 数组上的迭代
NumPy - 数组操作
修改形状
numpy.reshape(arr, newshape, order')
这个函数在不改变数据的条件下修改形状,它接受如下参数:
- arr:要修改形状的数组。
- newshape:整数或者整数数组,新的形状应当兼容原有形状。
- order:'C'为 C 风格顺序,'F'为 F 风格顺序,'A'为保留原顺序。
numpy.ndarray.flat
该函数返回数组上的一维迭代器,行为类似 Python 内建的迭代器。
ndarray.flatten(order)
该函数返回折叠为一维的数组副本,函数接受下列参数:
order:'C' — 按行,'F' — 按列,'A' — 原顺序,'k' — 元素在内存中的出现顺序。
numpy.ravel(a, order)
这个函数返回展开的一维数组,并且按需生成副本。返回的数组和输入数组拥有相同数据类型。这个函数接受两个参数。
order:'C' — 按行,'F' — 按列,'A' — 原顺序,'k' — 元素在内存中的出现顺序。
翻转操作
numpy.transpose(arr, axes)
这个函数翻转给定数组的维度。如果可能的话它会返回一个视图。函数接受下列参数:
- arr:要转置的数组。
- axes:整数的列表,对应维度,通常所有维度都会翻转。
numpy.ndarray.T
该函数属于ndarray类,行为类似于numpy.transpose。
numpy.rollaxis(arr, axis, start)
该函数向后滚动特定的轴,直到一个特定位置。这个函数接受三个参数:
- arr:输入数组。
- axis:要向后滚动的轴,其它轴的相对位置不会改变。
- start:默认为零,表示完整的滚动。会滚动到特定位置。
numpy.swapaxes(arr, axis1, axis2)
该函数交换数组的两个轴。对于 1.10 之前的 NumPy 版本,会返回交换后数组的试图。这个函数接受下列参数:
- r:要交换其轴的输入数组。
- axis1:对应第一个轴的整数。
- axis2:对应第二个轴的整数。
修改维度
numpy.broadcast_to(array, shape, subok)
函数通过在指定位置插入新的轴来扩展数组形状。该函数需要两个参数:
- arr:输入数组。
- axis:新轴插入的位置
numpy.squeeze(arr, axis)
函数从给定数组的形状中删除一维条目。 此函数需要两个参数。
- arr:输入数组。
- axis:整数或整数元组,用于选择形状中单一维度条目的子集。
数组的连接
numpy.concatenate((a1, a2, ...), axis)
数组的连接是指连接。 此函数用于沿指定轴连接相同形状的两个或多个数组。 该函数接受以下参数。
- a1, a2, ...:相同类型的数组序列。
- axis:沿着它连接数组的轴,默认为 0。
numpy.stack(arrays, axis)
此函数沿新轴连接数组序列。 此功能添加自 NumPy 版本 1.10.0。 需要提供以下参数。
- arrays:相同形状的数组序列。
- axis:返回数组中的轴,输入数组沿着它来堆叠。
numpy.hstack
函数的变体,通过堆叠来生成水平的单个数组。
numpy.vstack
numpy.stack函数的变体,通过堆叠来生成竖直的单个数组。
数组分割
numpy.split(ary, indices_or_sections, axis)
该函数沿特定的轴将数组分割为子数组。函数接受三个参数:
- ary:被分割的输入数组。
- indices_or_sections:可以是整数,表明要从输入数组创建的,等大小的子数组的数量。 如果此参数是一维数组,则其元素表明要创建新子数组的点。
- axis:默认为 0。
numpy.hsplit
numpy.hsplit是split()函数的特例,其中轴为 1 表示水平分割,无论输入数组的维度是什么。
numpy.vsplit
numpy.vsplit是split()函数的特例,其中轴为 0 表示竖直分割,无论输入数组的维度是什么。
添加/删除元素
numpy.resize(arr, shape)
此函数返回指定大小的新数组。 如果新大小大于原始大小,则包含原始数组中的元素的重复副本。 该函数接受以下参数:
- arr:要修改大小的输入数组。
- shape:返回数组的新形状。
numpy.append(arr, values, axis)
此函数在输入数组的末尾添加值。 附加操作不是原地的,而是分配新的数组。 此外,输入数组的维度必须匹配否则将生成ValueError。
- arr:输入数组。
- values:要向arr添加的值,比如和arr形状相同(除了要添加的轴)。
- axis:沿着它完成操作的轴。如果没有提供,两个参数都会被展开。
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,返回去重数组中的元素在原数组中的出现次数。
NumPy位操作
np.bitwise_and()
对输入数组中的整数的二进制表示的相应位执行位与运算。
np.bitwise_or()
对输入数组中的整数的二进制表示的相应位执行位或运算。
np.invert()
计算输入数组中整数的位非结果。 对于有符号整数,返回补码。
numpy.left shift()
将数组元素的二进制表示中的位向左移动到指定位置,右侧附加相等数量的 0。
numpy.right_shift()
将数组元素的二进制表示中的位向右移动到指定位置,左侧附加相等数量的 0。
NumPy字符串函数
numpy.char.add()
函数执行按元素的字符串连接。
numpy.char.multiply()
这个函数执行多重连接。
numpy.char.center(arr, width,fillchar)
此函数返回所需宽度的数组,以便输入字符串位于中心,并使用fillchar
在左侧和右侧进行填充。
numpy.char.capitalize()
函数返回字符串的副本,其中第一个字母大写
numpy.char.title()
返回输入字符串的按元素标题转换版本,其中每个单词的首字母都大写。
numpy.char.lower()
函数返回一个数组,其元素转换为小写。
numpy.char.upper()
函数返回一个数组,其元素转换为大写。
numpy.char.split(arr,sep = '')
此函数返回输入字符串中的单词列表。 默认情况下,空格用作分隔符。 否则,指定的分隔符字符用于分割字符串
numpy.char.splitlines()
函数返回数组中元素的单词列表,以换行符分割。
numpy.char.strip(arr,char)
函数返回数组的副本,其中元素移除了开头或结尾处的特定字符。
numpy.char.join()
这个函数返回一个字符串,其中单个字符由特定的分隔符连接。
numpy.char.replace()
这个函数返回字符串副本,其中所有字符序列的出现位置都被另一个给定的字符序列取代。
numpy.char.decode()
numpy.char.encode()
NumPy数学算数函数
三角函数
numpy.sin()
numpy.cos()
numpy.tan()
numpy.arcsin()
numpy.arccos()
numpy.arctan()
舍入函数
numpy.around(a,decimals=0)
这个函数返回四舍五入到所需精度的值。 该函数接受以下参数:
- a:数组
- decimals:要舍入的小数位数。如果为负,整数将四舍五入到小数点左侧的位置。
numpy.floor()
此函数返回不大于输入参数的最大整数。
numpy.ceil()
此函数返回输入值的上限。
算数运算
numpy.add()
numpy.subtract()
numpy.multiply()
numpy.devide()
numpy.reciprocal()
此函数返回参数逐元素的倒数。
numpy.power()
此函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
numpy.mod()
此函数返回输入数组中相应元素的除法余数。
numpy.real()
返回复数类型参数的实部。
numpy.imag()
返回复数类型参数的虚部。
numpy.conj()
返回通过改变虚部的符号而获得的共轭复数。
numpy.angle(degree)
返回复数参数的角度。 参数:
degree: 如果为true
,返回的角度以角度制来表示,否则为以弧度制来表示。
NumPy统计函数
numpy.amin()
从给定数组中的元素沿指定轴返回最小值。
numpy.amax()
从给定数组中的元素沿指定轴返回最大值。
numpy.ptp()
返回沿轴的值的范围(最大值 - 最小值)。
numpy.percentile(a, q, axis)
百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。接受以下参数:
- a:输入数组
- q:要计算的百分位数
- axis:沿着它计算百分位数的轴
numpy.median()
中值定义为将数据样本的上半部分与下半部分分开的值。
numpy.mean()
算术平均值是沿轴的元素的总和除以元素的数量。
numpy.average(weights)
加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。
numpy.std()
标准差
numpy.var()
方差
NumPy - 排序、搜索和计数函数
numpy.sort(a, axis, kind='quicksort', order)
函数返回输入数组的排序副本。 它有以下参数:
- a:要排序的数组
- axis:沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序
- kind:
'mergesort'
(归并排序)、'quicksort'
(快速排序)、'heapsort'
(堆排序) - order:如果数组包含字段,则是要排序的字段
numpy.argsort()
对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。 这个索引数组用于构造排序后的数组。
numpy.lexsort()
用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。
numpy.argmax()
沿给定轴返回最大元素的索引。
numpy.argmin()
沿给定轴返回最小元素的索引。
numpy.nonzero()
返回输入数组中非零元素的索引。
numpy.where()
返回输入数组中满足给定条件的元素的索引。
numpy.extract()
函数根据某个条件从数组中抽取元素,返回满条件的元素。
NumPy - 字节交换
numpy.ndarray.byteswap()
NumPy副本和视图
无复制
视图或浅复制
ndarray.view()
它是一个新的数组对象,并可查看原始数组的相同数据。
ndarray.copy()
函数创建一个深层副本。 它是数组及其数据的完整副本,不与原始数组共享。
NumPy矩阵库
numpy.matlib.empty(shape, dtype, order)
函数返回一个新的矩阵,而不初始化元素。 该函数接受以下参数。
- shape:定义新矩阵形状的整数或整数元组
- Dtype:可选,输出的数据类型
- order: C(行序优先) 或者 F(列序优先)
numpy.matlib.zeros()
此函数返回以零填充的矩阵。
numpy.matlib.ones()
此函数返回以一填充的矩阵。
numpy.matlib.eye(n, M=n,k, dtype)
这个函数返回一个矩阵,对角线元素为 1,其他位置为零。 该函数接受以下参数:
- n:返回矩阵的行数
- M:返回矩阵的列数
- k:对角线的索引
- dtype:输出的数据类型
numpy.matlib.identity()
返回给定大小的单位矩阵。单位矩阵是主对角线元素都为 1 的方阵。
numpy.matlib.rand()
numpy.matlib.rand()`函数返回给定大小的填充随机值的矩阵。
NumPy线性代数
numpy.dot()
对于二维向量,其等效于矩阵乘法。 对于一维数组,它是向量的内积。 对于 N 维数组,它是a
的最后一个轴上的和与b
的倒数第二个轴的乘积。
numpy.vdot()
此函数返回两个向量的点积。
numpy.inner()
此函数返回一维数组的向量内积。 对于更高的维度,它返回最后一个轴上的和的乘积。
numpy.matmul()
函数返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。
numpy.linalg.det()
计算输入矩阵的行列式。
numpy.linalg.solve()
函数给出了矩阵形式的线性方程的解。
numpy.linalg.inv()
计算矩阵的乘法逆矩阵。