块向量
(类来自 pyomo.contrib.pynumero.sparse.block_vector)
- class pyomo.contrib.pynumero.sparse.block_vector.BlockVector(nblocks)[source]
基础类:
BaseBlockVector,ndarray结构化向量接口。此接口可用于对由向量组成的向量执行操作。例如,
>>> import numpy as np >>> from pyomo.contrib.pynumero.sparse import BlockVector >>> bv = BlockVector(3) >>> v0 = np.ones(3) >>> v1 = v0*2 >>> v2 = np.random.normal(size=4) >>> bv.set_block(0, v0) >>> bv.set_block(1, v1) >>> bv.set_block(2, v2) >>> bv2 = BlockVector(2) >>> bv2.set_block(0, v0) >>> bv2.set_block(1, bv)
- _brow_lengths
大小为nblocks的一维数组,指定块向量中每个条目的长度
- Type:
- Parameters:
nblocks (int) – BlockVector中的块数
方法
__init__(nblocks)all([axis, out, keepdims])如果所有元素的评估结果都为True,则返回True。
any([axis, out, keepdims])如果任何元素评估为True,则返回True。
argmax([axis, out])返回最大元素的索引。
argmin([axis, out])返回最小元素的索引。
argpartition(kth[, axis, kind, order])返回将分区此数组的索引。
argsort([axis, kind, order])返回将对此数组进行排序的索引。
astype(dtype[, order, casting, subok, copy])数组的副本,转换为指定类型
block_sizes([copy])返回一个包含此BlockVector中各个块大小的1D数组
byteswap([inplace])交换数组元素的字节
choose(choices[, out, mode])使用索引数组从一组选择中构造一个新数组。
clip([min, max, out])返回BlockVector,其值限制在[min, max]范围内。
clone([value, copy])返回此BlockVector的副本
compress(condition[, axis, out])返回每个子块的选定切片。
conj()对所有元素进行复共轭。
对所有元素进行复共轭。
copy([order])返回BlockVector的副本
返回一个填充了零的BlockVector结构的副本
copyfrom(other)将其他向量的条目复制到此向量中
copyto(other)将此BlockVector的条目复制到其他
cumprod([axis, dtype, out])返回沿给定轴元素的累积乘积。
cumsum([axis, dtype, out])返回沿给定轴的元素累积和。
diagonal([offset, axis1, axis2])返回指定的对角线。
dot(other[, out])返回点积
dump(文件)将数组的pickle转储到指定的文件中。
dumps()返回数组的pickle作为字符串。
fill(value)用标量值填充BlockVector。
flatten([order])将BlockVector转换为NumPy数组。
get_block(key)访问一个块。
get_block_size(ndx)getfield(dtype[, offset])返回给定数组的某个字段作为特定类型。
is_block_defined(ndx)item(*args)将数组的一个元素复制到一个标准的Python标量并返回它。
itemset(*args)max([axis, out, keepdims])返回存储在此BlockVector中的最大值
mean([axis, dtype, out, keepdims])返回此BlockVector中所有条目的平均值
min([axis, out, keepdims])返回向量中存储的最小值
newbyteorder([new_order])nonzero()返回非零元素的索引。
partition(kth[, axis, kind, order])部分排序数组中的元素,使得第k个位置的元素值处于其在排序数组中的位置。
pprint()以漂亮的格式打印BlockVector
prod([axis, dtype, out, keepdims])返回此BlockVector中所有条目的乘积
put(indices, values[, mode])为所有在索引中的n设置
a.flat[n] = values[n]。ravel([order])将BlockVector转换为NumPy数组。
repeat(repeats[, axis])重复数组的元素。
reshape(shape, /, *[, order, copy])返回一个包含相同数据但具有新形状的数组。
resize(new_shape[, refcheck])就地更改数组的形状和大小。
round([decimals, out])返回BlockVector,其中每个元素四舍五入到指定的小数位数
searchsorted(v[, side, sorter])找到在a中插入v元素的索引以保持顺序。
set_block(key, value)设置一个块。
set_blocks(blocks)以块为单位分配向量
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])返回BlockVector元素的标准差。
sum([axis, dtype, out, keepdims])返回此BlockVector中所有条目的总和
swapaxes(axis1, axis2)返回一个数组视图,其中axis1和axis2互换。
take(indices[, axis, out, mode])返回一个由a中给定索引处的元素组成的数组。
toMPIBlockVector(rank_ownership, mpi_comm[, ...])从此BlockVector创建一个并行的MPIBlockVector
to_devicetobytes([order])构造包含数组中原始数据字节的Python字节。
tofile(fid[, sep, format])将BlockVector的平面版本写入文件,格式为文本或二进制(默认)。
tolist()返回展平为列表的BlockVector。
tostring([order])~ndarray.tobytes 的兼容别名,行为完全相同。
trace([offset, axis1, axis2, dtype, out])返回数组对角线上的和。
transpose(*axes)返回数组的转置轴视图。
var([axis, dtype, out, ddof, keepdims])返回BlockVector元素的方差。
view([dtype][, type])具有相同数据的数组的新视图。
属性
T转置数组的视图。
base如果内存来自其他对象,则为基本对象。
返回此BlockVector中的块数,以元组形式表示。
ctypes一个用于简化数组与ctypes模块交互的对象。
data指向数组数据起始位置的Python缓冲区对象。
devicedtype数组元素的数据类型。
flags有关数组内存布局的信息。
flat数组的一维迭代器。
指示此BlockVector是否有任何非零条目。
imag数组的虚部。
itemsize一个数组元素的长度(以字节为单位)。
mT矩阵转置数组的视图。
返回块的数量。
nbytes数组元素消耗的总字节数。
返回此BlockVector的维度
ptpreal数组的实部。
返回此BlockVector中的元素总数
返回此BlockVector中的元素总数
strides遍历数组时在每个维度上步进的字节元组。
成员文档
- clip(min=None, max=None, out=None)[source]
返回一个值限制在[min, max]范围内的BlockVector。 必须提供max或min中的一个。
- Parameters:
min (scalar_like, optional) – 最小值。如果为None,则不对下限进行裁剪。
max (scalar_like, optional) – 最大值。如果为None,则不执行上区间边缘的裁剪。
- Return type:
- clone(value=None, copy=True)[source]
返回此BlockVector的副本
- Parameters:
value (标量 (可选)) – 克隆向量的所有条目都设置为该值
复制 (bool (可选)) – 如果为True,则对此向量中的每个块进行深拷贝。默认值为True
- Return type:
- compress(condition, axis=None, out=None)[source]
返回每个子块的选定切片。
- Parameters:
condition (Array 或 BlockVector 用于选择要返回的条目。) – 决定选择(在条件中评估为 True)
- Return type:
- copyfrom(other)[source]
将其他向量的条目复制到此向量中
- Parameters:
其他 (BlockVector 或 numpy.ndarray) – 要复制到此BlockVector的向量
- Return type:
无
- copyto(other)[source]
将此BlockVector的条目复制到其他
- Parameters:
其他 (BlockVector 或 numpy.ndarray)
- Return type:
无
- dot(other, out=None)[source]
返回点积
- Parameters:
其他 (ndarray 或 BlockVector)
- Return type:
- flatten(order='C')[source]
将BlockVector转换为NumPy数组。这也会在BlockVector中的底层NumPy数组上调用flatten。
- Parameters:
order (str: {C, F, A, K}, optional) – 请参阅NumPy数组文档。
- Returns:
flat_array – 由所有块连接而成的NumPy数组
- Return type:
- get_block(key)[source]
访问一个块。
- Parameters:
key (int) – 这是区块索引
- Returns:
block – 与索引键对应的块。
- Return type:
np.ndarray 或 BlockVector
- ravel(order='C')[source]
将BlockVector转换为NumPy数组。请注意,在连接它们之前,还会对BlockVector中的所有NumPy数组调用ravel。
- Parameters:
order (str) – 请参阅NumPy文档。
- Returns:
结果
- Return type:
- set_block(key, value)[source]
设置一个块。该值可以是NumPy数组或另一个BlockVector。
- Parameters:
key (int) – 这是区块索引
value – 这是块。它可以是NumPy数组或另一个BlockVector。
- set_blocks(blocks)[source]
以块为单位分配向量
- Parameters:
blocks (list) – numpy.ndarrays 和/或 BlockVectors 的列表
- Return type:
无
- toMPIBlockVector(rank_ownership, mpi_comm, assert_correct_owners=False)[source]
从此BlockVector创建一个并行的MPIBlockVector
- Parameters:
rank_ownership (array_like) – 大小为 nblocks 的数组。每个条目定义了每个块的所有权。 有两种类型的所有权。由所有处理器拥有的块, 和由单个处理器拥有的块。如果一个块由所有 处理器拥有,则其所有权为 -1。否则,如果一个块由 单个处理器拥有,则其所有权等于该处理器的 排名。
mpi_comm (MPI通信器) – 一个MPI通信器。通常是MPI.COMM_WORLD
- property bshape
返回此BlockVector中的块数,以元组形式表示。
- property has_none
指示此BlockVector是否有任何非零条目。
- property nblocks
返回块的数量。
- property ndim
返回此BlockVector的维度
- property shape
返回此BlockVector中的元素总数
- property size
返回此BlockVector中的元素总数