Я получаю MemoryError
с numpy.where
, но я не уверен, почему. Я не могу опубликовать фактический код здесь, но ниже приведен небольшой рабочий пример, который реплицирует проблему.MemoryError с numpy где
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
Я понимаю, что добавление памяти в моем компьютере будет решить эту проблему, но я хотел бы понять, что здесь происходит.
Я ожидаю, что фрагменты массива выше не будут копировать массив, а только возвращать представление, но я полагаю, что на самом деле он копирует массив по какой-то причине.