numpy
文章
1概述
量的定义 定义n维数组,并且在数组上进行简单的变换与操作。 名称 标量,单个数据,零阶张量, 向量,一维数组,一阶张量, 矩阵,二维数组,二阶张量 张量,高维数组,张量, 关系 可以使用向量,来定义n维线性空间、n维向量空间。向量,以数学的方式描述n维线性空间。标量、向量、矩阵、张量是对n维线性空间的暴力展开。 维数:数组总共有多少个维度。3维 维度:数组每个维的长度是多少。维度是(2,3,4) 范数:用来衡量数组的特征。F1范数,绝对值之和。F2范数,平方和。 列表和张量不同。列表的低维的维度可以不同。[[1],[1,2]]。张量,相同维的维度必须一致。 对于张量的描述可以使三阶,一阶二维,二阶三维,三阶四维。 对于数组的描述,应该是三维数组,一维维度是2,二维维度是3,三维维度是4 向量描述n维线性空间,向量的维度描述线性空间维度的个数,向量的数据描述每个维度的大小。 高维是外层的,低维是内层的。高维包含多个低维。低维能锁定更精确的数据。高维可以索引低维。 运算 同维度的四则运算,对应位运算。 不同维度的四则运算,进行广播。 点乘,同维度,同位置相乘相加。点乘,不同...
2数据类型
ndarray对象 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。 ndarray 对象是用于存放同类型元素的多维数组。 ndarray 中的每个元素在内存中都有相同存储大小的区域。 ndarray定义1numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) 名称 描述 object 数组或嵌套的数列 dtype 数组元素的数据类型,可选 copy 对象是否需要复制,可选 order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) subok 默认返回一个与基类类型一致的数组 ndmin 指定生成数组的最小维度 ndarray数据类型 名称 描述 bool_ 布尔型数据类型(True 或者 False) int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) intc 与 C 的 int 类型一样,一般...
3数组属性
基本概念NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维数,一维数组的秩为 1,二维数组的秩为 2,以此类推。 很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。 轴=秩=维数 第一维是高维,最后一维是低维。 数组属性 属性 说明 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 元素的虚部 ndarray.data 包含实际数组元素...
4创建数组
填充创建 方法 描述 empty(shape[, dtype, order]) 返回给定形状和类型的新数组,而无需初始化条目。 empty_like(prototype[, dtype, order, subok, …]) 返回形状和类型与给定数组相同的新数组。 eye(N[, M, k, dtype, order]) 返回一个二维数组,对角线上有一个,其他地方为零。 identity(n[, dtype]) 返回标识数组。 ones(shape[, dtype, order]) 返回给定形状和类型的新数组,并填充为1。 ones_like(a[, dtype, order, subok, shape]) 返回形状与类型与给定数组相同的数组。 zeros(shape[, dtype, order]) 返回给定形状和类型的新数组,并用零填充。 zeros_like(a[, dtype, order, subok, shape]) 返回形状与类型与给定数组相同的零数组。 full(shape, fill_value[, dtype, orde...
5索引迭代
索引 有三种可用的索引方法类型: 字段访问,基本切片和高级索引 所有的索引方式都是在方括号内。 :表示切片 ,表示高维度索引 [][]表示递归索引,对索引结果再次索引。 字段访问ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。 ndarray 数组可以基于 0 - n 的下标进行索引。 12345import numpy as np a = np.arange(10)s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2print (a[s]) 基本切片切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。 基本切片语法是 i:j:k,其中 i 是起始索引,j 是停止索引,k 是步骤(k\neq0)。这将选择具有索引值(在相应的维度中)i, i+k, …, i+(m-1) k 的 m 个元素, 12345import numpy as np a = np.arange(10) b = a[2:7:2] #...
6广播机制
广播广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。 低纬度向高维度广播。低纬度在高维度方向上复制。 123456789101112131415import numpy as np a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]])b = np.array([1,2,3])bb = np.tile(b, (4, 1)) # 重复 b 的各个维度print(a + bb)输出结果为:[[ 1 2 3] [11 12 13] [21 22 23] [31 32 33]] 广播原则广播的规则: 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。 输出数组的形状是输入数组形状的各个维度上的最大值。 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。 当输入数组的某个维度的...
7数组操作
数组处理程序 主要对数组本身的进行更改。并不是进行运算。 复制数组 方法 描述 copyto(dst, src[, casting, where]) 将值从一个数组复制到另一个数组,并根据需要进行广播。 改变形状 方法 描述 reshape(a, newshape[, order]) 在不更改数据的情况下为数组赋予新的形状。 ravel(a[, order]) 返回一个连续的扁平数组。 ndarray.flat 数组上的一维迭代器。 ndarray.flatten([order]) 返回折叠成一维的数组副本。 转置数组 方法 描述 moveaxis(a, source, destination) 将数组的轴移到新位置。 rollaxis(a, axis[, start]) 向后滚动指定的轴,直到其位于给定的位置。 swapaxes(a, axis1, axis2) 互换数组的两个轴。 ndarray.T 转置数组。 transpose(a[, axes]) 排列数组的尺寸。 更改维度数 方法 描述 ...
8位运算
二进制运算逐元素位操作 方法 描述 bitwise_and(x1, x2, /[, out, where, …]) 按元素计算两个数组的按位与。 bitwise_or(x1, x2, /[, out, where, casting, …]) 按元素计算两个数组的按位或。 bitwise_xor(x1, x2, /[, out, where, …]) 按元素计算两个数组的按位XOR。 invert(x, /[, out, where, casting, order, …]) 按元素计算按位求逆,或按位求非。 left_shift(x1, x2, /[, out, where, casting, …]) 将整数的位向左移动。 right_shift(x1, x2, /[, out, where, …]) 向右移整数的位。 打包二进制 方法 描述 packbits(a[, axis, bitorder]) 将二进制值数组的元素打包为uint8数组中的位。 unpackbits(a...
9字符串运算
字符串操作numpy.char 模块为类型 numpy.string_ 或的数组提供了一组向量化的字符串操作numpy.unicode_。它们全部基于Python标准库中的字符串方法。 字符串操作 方法 描述 add(x1, x2) 返回两个str或unicode数组的按元素的字符串连接。 multiply(a, i) 返回(a * i),即按元素方式的字符串多重连接。 mod(a, values) 返回(a%i),这是Python 2.6之前的字符串格式(迭代),针对一对str或unicode的array_likes元素。 capitalize(a) 返回的拷贝一个只有资本的每个元素的第一个字符。 center(a, width[, fillchar]) 返回的拷贝一与在长度的字符串居中其元素宽度。 decode(a[, encoding, errors]) 按元素调用str.decode。 encode(a[, encoding, errors]) 逐元素调用str.encode。 expandtabs(a[, tabsize]) 返回每...
10运算复写
基本运算算术和比较操作ndarrays 被定义为逐元素操作,并且通常将 ndarray对象作为结果产生。 算术运算+,-,*,/,//, %,divmod(),**,pow() 位运算<<,>>,&,^,|,~ 逻辑运算 not,and,or 比较运算==,<,>, <=,>=,!= 自等运算+=,-=,*=,/=,//=,%=,**=,<<=,>>=,&=,^=,|=,~= 以上所有运算在ndarray中均已经复写实现。 比较运算符 方法 描述 ndarray._lt_(self, value, /) 返回 self<value. ndarray._le_(self, value, /) 返回 self<...













