RuntimeWarning: Kann keine Ansichten über ein nicht zusammenhängendes Eingabefeld ohne Kopieren abgeben

Bei der Verwendung von Skimage bekomme ich folgende Fehlermeldung:

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 " 

Soweit ich das verstanden habe, weil x ein nicht zusammenhängendes Array ist.

Ich glaube, ich löste das Problem in meinem Code np.ascontiguousarray wie unten:

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

Ist das das Richtige zu tun? Anmerkung: Ich tue es die ganze Zeit, die ich diese Funktion von Skimage nenne … hat es irgendeine besondere Implikation?

One Solution collect form web for “RuntimeWarning: Kann keine Ansichten über ein nicht zusammenhängendes Eingabefeld ohne Kopieren abgeben”

 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]: 

Oder das FLAGS Attribut:

 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 nur tut

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

Es ist nur eine Kopie (der Databuffer), wenn nötig, um die richtige Reihenfolge zu bekommen. Weitere np.array Sie in den np.array Dokumenten. x.copy() würde eine Kopie unabhängig machen.

Ein ascontiguous Aufruf für alle loadmat Arrays macht Sinn, wenn Sie sie in skimage Code verwenden, dass C zusammenhängende Arrays erwartet. view_as_windows ist wahrscheinlich eine Art von String Tricks, um ein (Schiebefenster) zu machen.

Python ist die beste Programmiersprache der Welt.