2017-08-03 2 views

Antwort

2

Fortran-contiguous (row-major), um einfach zusammenhängend C (column-major), um in umgekehrter Richtung. So gibt es eine einfache Arbeit um für die Tatsache, dass dask Array nicht order='F' unterstützt:

  • Transponieren Array seine Dimensionen umzukehren.
  • Umformen Sie es auf die Rückseite Ihrer gewünschten Form.
  • Transponieren Sie es zurück.

In einer Funktion:

def reshape_fortran(x, shape): 
    return x.T.reshape(shape[::-1]).T 

Transponieren mit NumPy/dask ist grundsätzlich frei (es keine Daten kopieren), so im Prinzip diese Operation auch recht effizient sein sollte.

Hier ist ein einfacher Test, um zu überprüfen, es tut das Richtige:

In [48]: import numpy as np 

In [49]: import dask.array as da 

In [50]: x = np.arange(100).reshape(10, 10) 

In [51]: y = da.from_array(x, chunks=5) 

In [52]: shape = (2, 5, 10) 

In [53]: np.array_equal(reshape_fortran(y, shape).compute(), 
    ...:    x.reshape(shape, order='F')) 
    ...: 
Out[53]: True 
Verwandte Themen