文章目录
lib.stride_tricks.as_strided(x, shape=None, strides=None, subok=False, writeable=True)
描述
创建具有给定形状和步幅的数组视图
参数
x : 输入数组
shape :sequence of int, optional
新数组的形状。默认为x.shape
strides :sequence of int, optional
新数组的步长。默认为x.strides。
subok :bool, optional
如果为真,则保留子类。
writeable :bool, optional
如果设置为False,则返回的数组将始终为只读。
否则,如果原始数组是可写的。
如有可能,建议将其设置为False
Note
给定精确的步幅和形状,as_strided会在数组中创建一个视图。
这意味着它将操纵ndarray的内部数据结构,如果操作不正确,则数组元素可能指向无效的内存,并且可能损坏结果或使程序崩溃。
建议在计算新的跨度时始终使用原始的x.strides,以避免依赖连续的内存布局。
此外,使用此函数创建的数组通常包含自重叠内存,因此两个元素相同。
这种阵列上的向量化写操作通常是不可预测的。
对于小型,大型或转置阵列,它们甚至可能给出不同的结果。
由于必须非常仔细地测试和完成对这些数组的写入操作,因此您可能希望使用writeable = False以避免意外的写入操作。
由于这些原因,建议尽可能避免as_strided。
案例