numpy.recarray#
- class numpy.recarray(shape, dtype=None, buf=None, offset=0, strides=None, formats=None, names=None, titles=None, byteorder=None, aligned=False, order='C')[source]#
构造一个 ndarray,允许使用属性访问字段。
数组可能具有包含字段的数据类型,类似于电子表格中的列。例如
[(x, int), (y, float)]
,其中数组中的每个条目都是一个(int, float)
对。通常,这些属性使用字典查找访问,例如arr['x']
和arr['y']
。记录数组允许将字段作为数组的成员访问,使用arr.x
和arr.y
。- 参数:
- shape元组
输出数组的形状。
- dtype数据类型,可选
所需的数据类型。默认情况下,数据类型由 formats、names、titles、aligned 和 byteorder 确定。
- formats数据类型列表,可选
包含不同列数据类型的列表,例如
['i4', 'f8', 'i4']
。 formats 不支持使用类型直接的新的约定,例如(int, float, int)
。请注意,formats 必须是列表,而不是元组。鉴于 formats 有些受限,我们建议改为指定dtype
。- names字符串元组,可选
每列的名称,例如
('x', 'y', 'z')
。- buf缓冲区,可选
默认情况下,将创建具有给定形状和数据类型的新的数组。如果指定了 buf 并且它是一个公开缓冲区接口的对象,则数组将使用来自现有缓冲区的内存。在这种情况下,offset 和
strides
关键字可用。
- 返回值:
- recrecarray
具有给定形状和类型的空数组。
- 其他参数:
- titles字符串元组,可选
列名的别名。例如,如果 names 是
('x', 'y', 'z')
并且 titles 是('x_coordinate', 'y_coordinate', 'z_coordinate')
,则arr['x']
等效于arr.x
和arr.x_coordinate
。- byteorder{‘<’, ‘>’, ‘=’}, 可选
所有字段的字节序。
- aligned布尔值,可选
将内存中的字段与 C 编译器对齐。
- strides整数元组,可选
缓冲区 (buf) 根据这些步长进行解释(步长定义每个数组元素、行、列等在内存中占用的字节数)。
- offset整数,可选
从此偏移量开始读取缓冲区 (buf)。
- order{‘C’, ‘F’}, 可选
行优先(C 样式)或列优先(Fortran 样式)顺序。
参见
numpy.rec.fromrecords
从数据构造记录数组。
numpy.record
recarray
的基础数据类型。numpy.rec.format_parser
根据 formats、names、titles 确定数据类型。
注释
此构造函数可与
empty
相比:它创建新的记录数组,但不填充数据。要从数据创建记录数组,请使用以下方法之一创建一个标准 ndarray 并将其转换为记录数组,使用
arr.view(np.recarray)
使用 buf 关键字。
使用 np.rec.fromrecords。
示例
创建一个具有两个字段的数组,
x
和y
>>> import numpy as np >>> x = np.array([(1.0, 2), (3.0, 4)], dtype=[('x', '<f8'), ('y', '<i8')]) >>> x array([(1., 2), (3., 4)], dtype=[('x', '<f8'), ('y', '<i8')])
>>> x['x'] array([1., 3.])
将数组视为记录数组
>>> x = x.view(np.recarray)
>>> x.x array([1., 3.])
>>> x.y array([2, 4])
创建一个新的空记录数组
>>> np.recarray((2,), ... dtype=[('x', int), ('y', float), ('z', int)]) rec.array([(-1073741821, 1.2249118382103472e-301, 24547520), (3471280, 1.2134086255804012e-316, 0)], dtype=[('x', '<i4'), ('y', '<f8'), ('z', '<i4')])
- 属性:
T
转置数组的视图。
base
如果内存来自其他对象,则为基础对象。
ctypes
一个对象,用于简化数组与 ctypes 模块的交互。
data
指向数组数据开头的 Python 缓冲区对象。
- device
dtype
数组元素的数据类型。
flags
有关数组内存布局的信息。
flat
数组的一维迭代器。
imag
数组的虚部。
- itemset
itemsize
一个数组元素的字节长度。
mT
矩阵转置数组的视图。
nbytes
数组元素占用的总字节数。
ndim
数组维数。
- newbyteorder
- ptp
real
数组的实部。
shape
数组维数的元组。
size
数组中的元素数量。
strides
遍历数组时,在每个维度上要跨越的字节数的元组。
方法
all
([axis, out, keepdims, where])如果所有元素都计算为 True,则返回 True。
any
([axis, out, keepdims, where])如果 a 的任何元素计算为 True,则返回 True。
argmax
([axis, out, keepdims])返回给定轴上最大值的索引。
argmin
([axis, out, keepdims])返回给定轴上最小值的索引。
argpartition
(kth[, axis, kind, order])返回将此数组进行分区的索引。
argsort
([axis, kind, order])返回将此数组排序的索引。
astype
(dtype[, order, casting, subok, copy])数组的副本,强制转换为指定类型。
byteswap
([inplace])交换数组元素的字节
choose
(choices[, out, mode])使用索引数组从一组选项中构造新的数组。
clip
([min, max, out])返回一个数组,其值限制在
[min, max]
之间。compress
(condition[, axis, out])沿给定轴返回此数组的选定切片。
conj
()对所有元素进行复共轭。
返回逐元素的复共轭。
copy
([order])返回数组的副本。
cumprod
([axis, dtype, out])返回沿给定轴的元素的累积乘积。
cumsum
([axis, dtype, out])返回沿给定轴的元素的累积和。
diagonal
([offset, axis1, axis2])返回指定对角线。
dump
(file)将数组的 pickle 倾倒到指定的文件中。
dumps
()将数组的 pickle 作为字符串返回。
fill
(value)用标量值填充数组。
flatten
([order])返回将数组压缩为一维的副本。
getfield
(dtype[, offset])以特定类型返回给定数组的字段。
item
(*args)将数组元素复制到标准 Python 标量并返回它。
max
([axis, out, keepdims, initial, where])返回给定轴上的最大值。
mean
([axis, dtype, out, keepdims, where])返回给定轴上数组元素的平均值。
min
([axis, out, keepdims, initial, where])返回给定轴上的最小值。
nonzero
()返回非零元素的索引。
partition
(kth[, axis, kind, order])部分排序数组中的元素,使得第 k 个位置上的元素的值在排序后的数组中所处的位置。
prod
([axis, dtype, out, keepdims, initial, ...])返回给定轴上数组元素的乘积。
put
(indices, values[, mode])将
a.flat[n] = values[n]
用于所有 n 在索引中。ravel
([order])返回一个扁平化的数组。
repeat
(repeats[, axis])重复数组的元素。
reshape
(shape, /, *[, order, copy])返回一个包含相同数据但具有新形状的数组。
resize
(new_shape[, refcheck])就地更改数组的形状和大小。
round
([decimals, out])返回 a 其中每个元素四舍五入到给定的十进制位数。
searchsorted
(v[, side, sorter])查找将 v 的元素插入到 a 中以保持顺序的位置的索引。
setfield
(val, dtype[, offset])将一个值放入由数据类型定义的字段中的特定位置。
setflags
([write, align, uic])分别设置数组标志 WRITEABLE、ALIGNED、WRITEBACKIFCOPY。
sort
([axis, kind, order])就地排序数组。
squeeze
([axis])从 a 中删除长度为 1 的轴。
std
([axis, dtype, out, ddof, keepdims, where])返回给定轴上数组元素的标准差。
sum
([axis, dtype, out, keepdims, initial, where])返回给定轴上数组元素的总和。
swapaxes
(axis1, axis2)返回交换了 axis1 和 axis2 的数组视图。
take
(indices[, axis, out, mode])返回由给定索引处 a 的元素组成的数组。
tobytes
([order])构建包含数组中原始数据字节的 Python 字节。
tofile
(fid[, sep, format])将数组写入文件,可以是文本或二进制(默认)。
tolist
()将数组返回为
a.ndim
级深的 Python 标量的嵌套列表。tostring
([order])tobytes
的兼容别名,行为完全相同。trace
([offset, axis1, axis2, dtype, out])返回数组对角线上的总和。
transpose
(*axes)返回具有转置轴的数组视图。
var
([axis, dtype, out, ddof, keepdims, where])返回给定轴上数组元素的方差。
view
([dtype][, type])具有相同数据的数组的新视图。
dot
field
to_device