Ich bekomme eine MemoryError
mit numpy.where
aber ich bin mir nicht sicher warum. Ich kann den eigentlichen Code hier nicht veröffentlichen, aber unten ist ein kleines Arbeitsbeispiel, das das Problem repliziert.MemoryError mit numpy wo
import numpy as np
dat = np.random.randn(100000, 1, 1, 1, 45, 2, 3)
# The following two steps seem superfluous but I wanted to replicate
# behaviour in the original code
cond = dat[:,0,0,0,0,0,0] > 0
cond = cond[:,None,None,None,None,None,None]
dat2 = np.where(cond, dat, 0)
dat[...,2] = np.where(cond, dat[...,2], dat2[...,2]) # Causes MemoryError
Ich verstehe, dass mehr Speicher zu meinem Computer hinzugefügt wird, das Problem zu lösen, aber ich möchte verstehen, was hier vor sich geht.
Ich erwarte, dass die Array-Schnitte oben das Array nicht kopieren, sondern nur eine Ansicht zurückgeben, aber ich nehme an, dass es tatsächlich das Array aus irgendeinem Grund kopiert.