ndarray基础操作
N维数组ndarray是具有相同类型和大小的项目的(通常是固定大小的)多维容器。数组中的维和项的数量由其shape(形状)定义,该形状是指定每个维的大小的N个正整数的 元组 数组中的项类型由单独的数据类型对象(dtype)指定,其中一个对象与每个ndarray关联。与Python中的其他容器对象一样,可以通过对数组进行索引或切片(例如,使用整数n),以及通过 ndarray 的方法和属性来访问..
N维数组
ndarray
是具有相同类型和大小的项目的(通常是固定大小的)多维容器。数组中的维和项的数量由其shape(形状)定义,该形状是指定每个维的大小的N个正整数的 元组 数组中的项类型由单独的数据类型对象(dtype)指定,其中一个对象与每个ndarray关联。
与Python中的其他容器对象一样,可以通过对数组进行索引或切片(例如,使用整数n),以及通过 ndarray 的方法和属性来访问和修改 ndarray 的内容。
不同的ndarrays可以共享相同的数据,因此在一个ndarray中所做的更改可能在另一个中可见。 也就是说,ndarray可以是另一个ndarray的“视图”,它所指的数据由“base”ndarray处理。 ndarrays也可以是Pythonchace所拥有的内存视图或实现buffer或数组接口的对象
数组属性
数组属性反映数组本身固有的信息。通常,通过数组的属性访问它,你可以获取并设置数组的内部属性,而无需创建新的数组。公开的属性是数组的核心部分,只有其中一些属性可以在不创建新数组的情况下进行有意义的重置。每个属性的信息如下。
内存相关的属性
以下属性包含有关数组内存的信息:
ndarray.flags
有关数组内存分布的信息。ndarray.shape
数组维度的元组。ndarray.strides
遍历数组时要在每个维度中执行的字节元组。ndarray.ndim
数组维数。ndarray.data
指向数组数据开始的Python缓冲区对象。ndarray.size
数组中的元素数。ndarray.itemsize
一个数组元素的长度(以字节为单位)。ndarray.nbytes
数组元素消耗的总字节。ndarray.base
如果内存来自其他对象,则为基本对象。
数据类型
ndarray.dtype
数组元素的数据类型。
其他属性
ndarray.T
与self.transpose()
相同,只是如果 self.ndim <2 则返回自己。ndarray.real
数组的真实部分。ndarray.imag
数组的虚部。ndarray.flat
数组上的一维迭代器。ndarray.ctypes
一个简化数组与ctypes模块交互的对象。
数组方法
ndarray 对象有许多方法以某种方式对数组进行操作或与数组一起操作,通常返回数组结果。 下面简要说明这些方法。(每个方法的文档都有更完整的描述。)
对于以下方法,numpy中还有相应的函数:all,any,argmax,argmin,argpartition,argsort,choose,clip,compress,copy,cumprod,cumsum,diagonal,imag,max,mean,min,nonzero,partition, prod,ptp,put,ravel,real,repeat,reshape,round,searchsorted,sort,squeeze,std,sum,swapaxes,take,trace,transpose,var
。
数组转换
ndarray.item(*args)
将数组元素复制到标准Python标量并返回它。ndarray.tolist()
将数组作为(可能是嵌套的)列表返回。ndarray.itemset(*args)
将标量插入数组(如果可能,将标量转换为数组的dtype)ndarray.tostring([order])
构造包含数组中原始数据字节的Python字节。ndarray.tobytes([order])
构造包含数组中原始数据字节的Python字节。ndarray.tofile(fid[, sep, format])
将数组作为文本或二进制写入文件(默认)。ndarray.dump(file)
将数组的pickle转储到指定的文件。ndarray.dumps()
以字符串形式返回数组的pickle。ndarray.astype(dtype[, order, casting, …])
数组的副本,强制转换为指定的类型。ndarray.byteswap([inplace])
交换数组元素的字节ndarray.copy([order])
返回数组的副本。ndarray.view([dtype, type])
具有相同数据的数组的新视图。ndarray.getfield(dtype[, offset])
返回给定数组的字段作为特定类型。ndarray.setflags([write, align, uic])
分别设置数组标志WRITEABLE,ALIGNED,(WRITEBACKIFCOPY和UPDATEIFCOPY)。ndarray.fill(value)
使用标量值填充数组。
项目选择和操作
对于采用axis关键字的数组方法,默认为None。 如果axis为None,则将数组视为1维数组。轴的任何其他值表示操作应该沿着的维度。
ndarray.take(indices[, axis, out, mode])
返回由给定索引处的a元素组成的数组。ndarray.put(indices, values[, mode])
为索引中的所有n设置 a.flat[n] = values[n]。ndarray.repeat(repeats[, axis])
重复数组的元素。ndarray.choose(choices[, out, mode])
使用索引数组从一组选项中构造新数组。ndarray.sort([axis, kind, order])
就地对数组进行排序。ndarray.argsort([axis, kind, order])
返回将对此数组进行排序的索引。ndarray.partition(kth[, axis, kind, order])
重新排列数组中的元素,使得第k个位置的元素值处于排序数组中的位置。ndarray.argpartition(kth[, axis, kind, order])
重新排列数组中的元素,使得第k个位置的元素值处于排序数组中的位置。ndarray.searchsorted(v[, side, sorter])
查找应在其中插入v的元素以维护顺序的索引。ndarray.nonzero()
返回非零元素的索引。ndarray.compress(condition[, axis, out])
沿给定轴返回此数组的选定切片。ndarray.diagonal([offset, axis1, axis2])
返回指定的对角线。
计算
在下面这种情况下,其中许多方法都采用名为axis的参数。
- 如果axis为None(默认值),则将数组视为1-D数组,并对整个数组执行操作。 如果self是0维数组或数组标量,则此行为也是默认行为。 (数组标量是类型/类float32,float64等的实例,而0维数组是包含恰好一个数组标量的ndarray实例。)
- 如果axis是整数,则操作在给定轴上完成(对于可沿给定轴创建的每个1维的子阵列)。若数组是二维的,则axis=0表示沿列进行运算,axis=1表示沿行进行运算。
对于多种方法,还可以提供可选的out参数,并将结果放入给定的输出数组中。 out参数必须是 ndarray 并且具有相同数量的元素。 它可以具有不同的数据类型,在这种情况下将执行转换。
ndarray.argmax([axis, out])
返回给定轴的最大值索引。ndarray.min([axis, out, keepdims])
沿给定轴返回最小值。ndarray.argmin([axis, out])
沿a的给定轴返回最小值的索引。ndarray.ptp([axis, out])
沿给定轴的峰峰值(最大值 - 最小值)。ndarray.clip([min, max, out])
返回其值限制为 [min, max] 的数组。ndarray.conj()
复合共轭所有元素。ndarray.round([decimals, out])
返回a,每个元素四舍五入到给定的小数位数。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])
如果所有元素都计算为True,则返回True。ndarray.any([axis, out, keepdims])
如果求值的任何元素为True,则返回True。
特殊方法
标准库函数:
ndarray.copy()
如果在数组上调用copy.copy,则使用此方法。ndarray.deepcopy(memo, /)
如果在数组上调用copy.deepcopy,则使用此方法。ndarray.reduce()
用于腌制(译者注:很形象)。ndarray.setstate(state, /)
用于反腌制。
基本的定制:
ndarray.new($type, args, *kwargs)
创建并返回一个新对象。ndarray.array(|dtype)
如果没有给出dtype,则返回对self的新引用;如果dtype与数组的当前dtype不同,则返回提供的数据类型的新数组。ndarray.array_wrap(obj)
容器的定制: (参见索引)
ndarray.len($self, /)
返回 len(self).ndarray.getitem($self, key, /)
返回 self[key].ndarray.setitem($self, key, value, /)
给 self[key] 设置一个值。ndarray.contains($self, key, /)
返回 自身的关键索引。
转换;操作complex,int,long,float,oct和hex。它们位于数组中,其中包含一个元素并返回相应的标量。
ndarray.int(self)
ndarray.long
ndarray.float(self)
ndarray.oct
ndarray.hex
字符串表示:
ndarray.str($self, /)
返回 str(self).ndarray.repr($self, /)
返回 repr(self).
以上内容摘自https://www.numpy.org.cn/reference/array_objects/n_dimensional_array.html
更多推荐
所有评论(0)