gpt4 book ai didi

python - 运行时警告 : Cannot provide views on a non-contiguous input array without copying

转载 作者:行者123 更新时间:2023-11-28 17:17:39 27 4
gpt4 key购买 nike

使用 skimage 时出现以下错误:

win = skimage.util.view_as_windows(x, windowSize, windowShift)

C:\Program Files\Anaconda2\lib\site-packages\skimage\util\shape.py:247: RuntimeWarning: Cannot provide views on a non-contiguous input array without copying.
warn(RuntimeWarning("Cannot provide views on a non-contiguous input "

据我所知,这是因为 x 是一个非连续数组。

我想我解决了添加代码 np.ascontiguousarray 的问题,如下所示:

win = skimage.util.view_as_windows(np.ascontiguousarray(x), windowSize, windowShift)

这是正确的做法吗?注意:我从 skimage 调用这个函数时一直这样做……它有什么特别的含义吗?

最佳答案

In [44]: from scipy.io import loadmat
In [45]: d = loadmat('test7.mat')
In [46]: d
Out[46]:
{'__globals__': [],
'__header__': b'MATLAB 5.0 MAT-file, written by Octave 4.0.0, 2016-09-01 15:43:02 UTC',
'__version__': '1.0',
'x': array([[ 1., 2., 3.],
[ 4., 5., 6.]])}

In [48]: np.info(d['x'])
class: ndarray
shape: (2, 3)
strides: (8, 16)
itemsize: 8
aligned: True
contiguous: False
fortran: True
data pointer: 0xabfa13d8
byteorder: little
byteswap: False
type: float64
In [49]:

FLAGS 属性:

In [52]: x.flags
Out[52]:
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
In [54]: d['x'].flags['C_CONTIGUOUS']
Out[54]: False
In [55]: d['x'].flags['F_CONTIGUOUS']
Out[55]: True

np.ascontiguous 就是这样

array(a, dtype, copy=False, order='C', ndmin=1)

如果需要获得正确的顺序,它只会复制(数据缓冲区的)。有关详细信息,请参阅 np.array 文档。 x.copy() 无论如何都会复制一份。

ascontiguous 对所有 loadmat 数组的调用是有意义的,如果你打算在需要 C< 的 skimage 代码中使用它们 连续数组。 view_as_windows 可能正在做一些跨步技巧来制作(滑动)窗口。

关于python - 运行时警告 : Cannot provide views on a non-contiguous input array without copying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43365826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com