gpt4 book ai didi

arrays - Numpy.mean, amin, amax, std 巨额返回

转载 作者:行者123 更新时间:2023-12-05 00:37:27 25 4
gpt4 key购买 nike

我正在努力处理大型 numpy 数组。这是场景。我正在处理 300MB - 950MB 的图像,并使用 GDAL 将它们作为 Numpy 数组读取。读取数组使用的内存与预期的一样多,即。 250MB 用于 250MB 图像,等等...

当我使用 numpy 获取平均值、最小值、最大值或标准偏差时,就会出现我的问题。在 main() 中,我打开图像并读取数组(类型 ndarray)。然后我调用以下函数来获取二维数组的标准偏差:

def get_array_std(input_array):
array_standard_deviation = numpy.std(input_array, copy=False)
return array_standard_deviation

在这里,我经常遇到内存错误(在 6GB 机器上)。来自 documentation看起来 numpy 正在返回一个与我的输入具有相同形状和 dtype 的 ndarray,从而使内存大小加倍。

使用:
print type(array_standard_deviation)

返回:
numpy.float64

此外,使用:
print array_standard_deviation

正如人们所期望的那样返回一个浮点标准。 numpy 是否再次读取数组以执行此计算?我最好遍历数组并手动执行计算吗?使用扁平数组如何?

我尝试将每个统计调用(numpy.amin()、numpy.amax()、numpy.std()、numpy.mean())放入它们自己的函数中,这样大数组就会超出范围,但没有运气那里。我也尝试将返回转换为另一种类型,但没有任何乐趣。

最佳答案

Numpy 对 std 执行了一个“天真的”reduce 操作。这是相当低效的内存。
在这里寻找更好的实现:
http://luispedro.org/software/ncreduce

关于arrays - Numpy.mean, amin, amax, std 巨额返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6958767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com