简介:
NumPy提供了N维数组的类型,既ndarray。下面这张图展示了三个基本的来描述数组的对象:1)ndarray本身,2)描述特定大小数组的data-type对象,3)当获取元素时所返回的array-scalar对象。
ndarray(N-dimensional array)是相同类型,固定尺寸的元素的多维储存容器。由此我们可以
知道Numpy提供的ndarray容器有两个特点:第一,它是固定的尺寸,既是你如果新建了一个ndarray的实例,则它的大小就是固定的,不能再添加元素和删除元素,只能更改其中的元素。这类似于java的数组,以及python标准库中所提供的元组对象。第二,他所包含元素的类型必须是一致的,不能出现不一样的元素。这区别于pandas库中所提供的DataFrame对象
也正是因为这两个特点,使得ndarray对象的运算效率特别快。
shape定义了它的纬度(dimensions)和元素(items)。而datat-type(dtype)对象则指定了数组中的元素(items)。
创建ndarray对象
1和0的ndarray对象(Ones and zeros)
Function | Describe |
---|
empty(shape[, dtype, order]) | 返回一个给定形状的空ndarray数组 |
empty_like(a[, dtype, order, subok]) | 返回一个和给定数组相同形状的ndarray |
eye(N[, M, k, dtype]) | 返回一个对角线元素为1,其他全为0的ndarray数组,可以指定对角位置 |
identity(n[, dtype]) | 返回一个对角线为1,其他全部为0的ndarray数组 |
ones(shape[, dtype, order]) | 返回一个全部为1的给定形状的ndarray |
ones_like(a[, dtype, order, subok]) | 返回一个和给定数组相同形状的ndarray |
zeros(shape[, dtype, order]) | 返回一个全部为0的给定形状的ndarray |
zeros_like(a[, dtype, order, subok]) | 返回一个给定数组相同形状的ndarray |
full(shape, fill_value[, dtype, order]) | 返回一个给定形状的使用具体参数填充的ndarray对象 |
full_like(a, fill_value[, dtype, order, subok]) | 返回一个和给定数组形状相同的使用具体参数填充的ndarray对象 |
从已有的数据中创建ndarray
Function | Describe |
---|
array(object[, dtype, copy, order, subok, ndmin]) | 创建一个ndarry对象,可以通过list、tuple等 |
asarray(a[, dtype, order]) | 将传入参数转换为ndarray对象 |
asanyarray(a[, dtype, order]) | 将传入对象转换为ndarray对象,但是ndarray的子类不转换 |
ascontiguousarray(a[, dtype]) | 在内存中返回一个连续的ndarray对象. |
asmatrix(data[, dtype]) | 将传入对象转换为矩阵 |
copy(a[, order]) | 返回一个复制的ndarray对象 |
frombuffer(buffer[, dtype, count, offset]) | 将buffer转换为一维ndarray |
fromfile(file[, dtype, count, sep]) | 从文本文件或者二进制文件中创建ndarray对象 |
fromfunction(function, shape, **kwargs) | 通过在各个坐标上执行函数来创建ndarray对象 |
fromiter(iterable, dtype[, count]) | 从迭代器中创建一维ndarray对象 |
fromstring(string[, dtype, count, sep]) | 在字符串中创建一个一维ndarray对象 |
loadtxt(fname[, dtype, comments, delimiter, …]) | 载入数据 |
生成数值域(Numerical ranges)
Function | Describe |
---|
arange([start,] stop[, step,][, dtype]) | 根据首项、末项、公差,生成等差数列 |
linspace(start, stop[, num, endpoint, …]) | 根据首项、末项、数量,生成等差数列 |
logspace(start, stop[, num, endpoint, base, …]) | 生成对数等差数列 |
geomspace(start, stop[, num, endpoint, dtype]) | 生成指数等差数列 |
meshgrid(*xi, **kwargs) | Return coordinate matrices from coordinate vectors. |
mgrid | nd_grid instance which returns a dense multi-dimensional “meshgrid”. |
ogrid | nd_grid instance which returns an open multi-dimensional “meshgrid”. |
生成矩阵
Function | Describe |
---|
diag(v[,?k]) | 抽取对角线元素,或者创建对角线ndarray对象 |
diagflat(v[,?k]) | 从给定的一维数组作为对角线,创建一个二维数据 |
tri(N[,?M,?k,?dtype]) | 创建在给定对角之下全为1的ndarray对象 |
tril(m[,?k]) | 创建给定对角一下的ndarray对象 |
triu(m[,?k]) | 创建给定对角以上的ndarray对象 |
vander(x[,?N,?increasing]) | 创建一个范德蒙矩阵(Vandermonde matrix) |
mat(data[, dtype]) | 将给定对象转换为矩阵对象 |
bmat(obj[, ldict, gdict]) | 以字符串,嵌套序列或数组创建矩阵 |
索引
基本的索引语法是start:stop:step,start是开始的索引(从0开始)、stop是结束的索引、step是步长。
>>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x[1:7:2]
array([1, 3, 5])
>>> x[-2:10]
array([8, 9])
>>> x[-3:3:-1]
array([7, 6, 5, 4])
ndarray属性
内存配置
Function | Describe |
---|
ndarray.flags | 查看ndarray对象的内存配置信息 |
ndarray.shape | 查看ndarray的形状 |
ndarray.strides | Tuple of bytes to step in each dimension when traversing an array. |
ndarray.ndim | 查看ndarray的维度 |
ndarray.data | 查看ndarray开头所指向的python内存缓存区 |
ndarray.size | 查看ndarray包含的元素个数 |
ndarray.itemsize | 查看ndarray一个元素的二进制长度 |
ndarray.nbytes | 查看ndarray总元素的二进制长度 |
ndarray.base | 查看ndarray基础对象 |
ndarray.dtype | 查看ndarray对象的数据类型 |
ndarray.T | 返回ndarray的转置,如果ndarray是1维,则返回本身 |
ndarray.real | 返回ndarray实数的部分 |
ndarray.imag | 返回ndarray的虚数部分 |
ndarray.flat | 一个1维的迭代器(先将多维数组按一维来排序) |
ndarray.ctypes | An object to simplify the interaction of the array with the ctypes module |
ndarray方法
转换
Function | Describe |
---|
ndarray.item(*args) | 复制一个ndarray的对象并转换为python的标量 |
ndarray.tolist() | 返回一个list对象 |
ndarray.itemset(*args) | 在ndarray中插入一项,并覆盖掉原数据 |
ndarray.tostring([order]) | 从ndarray对象中创建python二进制数据 |
ndarray.tobytes([order]) | 从ndarray对象中创建python二进制数据 |
ndarray.tofile(fid[, sep, format]) | 将数组转换为文本或者二进制数组 |
ndarray.dump(file) | 将ndarray转换为pickle对象 |
ndarray.dumps() | 将pickle转换为字符串 |
ndarray.astype(dtype[, order, casting, …]) | 将ndarray转换为特定的数据类型 |
ndarray.byteswap(inplace) | 更换ndarray对象的二进制元素 |
ndarray.copy([order]) | 返回一个复制的ndarray对象 |
ndarray.view([dtype, type]) | 具有相同数组的新观察 |
ndarray.getfield(dtype[, offset]) | 返回给定的数据类型的部分 |
ndarray.setflags([write, align, uic]) | 设置ndarray的标志 |
ndarray.fill(value) | 使用一个标量来填充ndarray |
形状操作
Function | Describe |
---|
ndarray.reshape(shape[, order]) | 返回一个含有相同数据的不同形状的ndarray对象 |
ndarray.resize(new_shape[, refcheck]) | 改变ndarray的形状和尺寸 |
ndarray.transpose(*axes) | 返回一个转置矩阵 |
ndarray.swapaxes(axis1, axis2) | 返回一个坐标轴1和坐标轴2相互转换的ndarray对象 |
ndarray.flatten([order]) | 将ndarray转换为一维ndarray |
ndarray.ravel([order]) | 和flatten相同 |
ndarray.squeeze([axis]) | 移除某一维度 |
筛选项目和操作
Function | Describe |
---|
ndarray.take(indices[, axis, out, mode]) | 根据索引选择项目并返回一个ndarray |
ndarray.put(indices, values[, mode]) | 在ndarray对象中插入项目 |
ndarray.repeat(repeats[, axis]) | 重复元素 |
ndarray.choose(choices[, out, mode]) | 在ndarray中选择元素来创建新的ndarray |
ndarray.sort([axis, kind, order]) | 排序 |
ndarray.argsort([axis, kind, order]) | 返回排序索引 |
ndarray.partition(kth[, axis, kind, order]) | 部分排序 |
ndarray.argpartition(kth[, axis, kind, order]) | 返回部分排序索引 |
ndarray.searchsorted(v[, side, sorter]) | 返回所要查询项的索引 |
ndarray.nonzero() | 返回非零元素的索引 |
ndarray.compress(condition[, axis, out]) | Return selected slices of this array along given axis. |
ndarray.diagonal([offset, axis1, axis2]) | 返回对角线元素 |
统计运算
Function | Describe |
---|
ndarray.argmax([axis, out]) | 返回最大值的索引 |
ndarray.min([axis, out, keepdims]) | 返回最小值 |
ndarray.argmin([axis, out]) | 返回最小值的索引 |
ndarray.ptp([axis, out]) | 返回最大值减去最小值 |
ndarray.clip([min, max, out]) | 返回给定区间的值 |
ndarray.conj() | Complex-conjugate all elements. |
ndarray.round([decimals, out]) | 四舍五入 |
ndarray.trace([offset, axis1, axis2, dtype, out]) | 返回对角线元素的和 |
ndarray.sum([axis, dtype, out, keepdims]) | 返回轴的和 |
ndarray.cumsum([axis, dtype, out]) | 返回轴的累加和 |
ndarray.mean([axis, dtype, out, keepdims]) | 返回轴的平均值 |
ndarray.var([axis, dtype, out, ddof, keepdims]) | 返回轴的方差 |
ndarray.std([axis, dtype, out, ddof, keepdims]) | 返回轴的标准差 |
ndarray.prod([axis, dtype, out, keepdims]) | 返回轴的乘积 |
ndarray.cumprod([axis, dtype, out]) | 返回轴的累乘积 |
ndarray.all([axis, out, keepdims]) | 判断是否全为真 |
ndarray.any([axis, out, keepdims]) | 判断是否含有真 |
算数运算,矩阵相乘和比较操作
比较操作
Function | Describe |
---|
ndarray.lt | x.lt(y) <==> x |
ndarray.le | x.le(y) <==> x<=y |
ndarray.gt | x.gt(y) <==> x>y |
ndarray.ge | x.ge(y) <==> x>=y |
ndarray.eq | x.eq(y) <==> x==y |
ndarray.ne | x.ne(y) <==> x!=y |
算数运算
Function | Describe |
---|
ndarray.neg | x.neg() <==> -x |
ndarray.pos | x.pos() <==> +x |
ndarray.abs() | <==>abs(x) |
ndarray.invert | x.invert() <==> ~x |
ndarray.add | x.add(y) <==> x+y |
ndarray.sub | x.sub(y) <==> x-y |
ndarray.mul | x.mul(y) <==> x*y |
ndarray.div | x.div(y) <==> x/y |
ndarray.truediv | x.truediv(y) <==> x/y |
ndarray.floordiv | x.floordiv(y) <==> x//y |
ndarray.mod | x.mod(y) <==> x%y |
ndarray.divmod(y) | <==> divmod(x, y) |
ndarray.pow(y[, z]) | <==> pow(x, y[, z]) |
ndarray.lshift | x.lshift(y) <==> x< |
ndarray.rshift | x.rshift(y) <==> x>>y |
ndarray.and | x.and(y) <==> x&y |
ndarray.or | x.or(y) <==> x |
ndarray.xor | x.xor(y) <==> x^y |
自运算
Function | Describe |
---|
ndarray.iadd | x.iadd(y) <==> x+=y |
ndarray.isub | x.isub(y) <==> x-=y |
ndarray.imul | x.imul(y) <==> x*=y |
ndarray.idiv | x.idiv(y) <==> x/=y |
ndarray.itruediv | x.itruediv(y) <==> x/y |
ndarray.ifloordiv | x.ifloordiv(y) <==> x//y |
ndarray.imod | x.imod(y) <==> x%=y |
ndarray.ipow | x.ipow(y) <==> x**=y |
ndarray.ilshift | x.ilshift(y) <==> x<<=y |
ndarray.irshift | x.irshift(y) <==> x>>=y |
ndarray.iand | x.iand(y) <==> x&=y |
ndarray.ior | x.ior(y) <==> x |
ndarray.ixor | x.ixor(y) <==> x^=y |