【发布时间】:2016-03-30 12:57:15
【问题描述】:
我收到了MemoryError 和numpy.where,但我不知道为什么。我无法在此处发布实际代码,但下面是一个复制该问题的小型工作示例。
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
我知道向我的计算机添加更多内存可以解决问题,但我想了解这里发生了什么。
我希望上面的数组切片不会复制数组而只会返回一个视图,但我想它实际上是出于某种原因复制数组。
【问题讨论】:
标签: python arrays numpy memory