Pandas 列_堆栈返回非连续数组
我在使用非连续数组的代码中遇到问题。 我特别收到以下警告信息:Pandas 列_堆栈返回非连续数组,pandas,numpy,contiguous,Pandas,Numpy,Contiguous,我在使用非连续数组的代码中遇到问题。 我特别收到以下警告信息: 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-contigu
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 "
我正在使用
但是我得到了一个非连续数组
你知道我怎样才能得到连续阵列吗?我应该在列堆栈之后始终使用ascontiguousarray
?np。堆栈([x,y])
是不连续的。然而,np.stack([x,y]).T
np.stack([x, y]) # Transpose of what you want and not contiguous
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
相反:
stack = np.stack([x, y]).T
skimage
代码
在列\u堆栈上的该测试正常:
In [278]: xy.flags.contiguous
Out[278]: True
In [279]: xy.T.flags.contiguous
Out[279]: False
通常构造的二维数组是连续的。但是它们的转置是F-连续的
。警告是np.ascontiguousarray
将生成一份副本。对于非常大的阵列,这可能是一个问题
如果经常出现此警告,您可以在调用此函数之前抑制它,或常规使用ascontiguousarray
您这里所说的“连续的”
是什么意思?你是什么意思np。column_stack
只是将输入堆叠为列,这就是它所做的,而hstack将在输入馈送时按顺序水平堆叠这些输入,这是两种不同的操作。结果对我来说是连续的。请查看我的编辑…@Divakar是的,对不起,我以为hstack也会堆叠列。。。我需要的是通过列将x和y连接起来。您是否使用stack
或stack.T
获得此错误。stack/concatenate
变体都应该生成2d C连续数组.T
将使其F连续
。
In [276]: xy=np.column_stack((x,y))
In [277]: np.info(xy)
class: ndarray
shape: (4, 2)
strides: (8, 4)
itemsize: 4
aligned: True
contiguous: True
fortran: False
data pointer: 0xa836ec0
byteorder: little
byteswap: False
type: int32
# -- build rolling window view
if not arr_in.flags.contiguous:
warn(RuntimeWarning("Cannot provide views on a non-contiguous input "
"array without copying."))
arr_in = np.ascontiguousarray(arr_in)
In [278]: xy.flags.contiguous
Out[278]: True
In [279]: xy.T.flags.contiguous
Out[279]: False