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