我希望整合具有大尺寸(~4000 x 4000像素)的图像,其中图像是具有1E-6和1E-7数量级的多个值的数组。
使用print sum(my_array)
任务后,我会收到:
[0. 0. 0. ...,0.0。0。]
阵列很好,阵列的边缘有很多0,所以我们为什么在这里看到它们,但我想要所有像素的总积分值,是否真的简化了实现这一目标的方法大数组的值很小?也许是numpy?
答案 0 :(得分:2)
问题是你使用python内置的sum是(或使用)迭代器。迭代嵌套列表(并迭代np.ndarray
就像迭代嵌套列表一样)将无法按照您需要的方式工作(除了数组是一维的)。如果你想要所有值的总和,试试这个
import numpy as np
# Just an example array, you need to define your array here
my_array = np.random.normal(0,1e-7,10000).reshape(100,100)
# np.sum instead of normal python sum. If you have NaNs try np.nansum
np.sum(my_array)
# 2.9210826829167365e-06
sum
所做的是迭代第一个轴(行)并构建列的总和。这就是你得到list
作为回报的原因。
另外,我建议您查看numpy文档或一些numpy教程的一些示例。 Numpy有很多很棒的功能,也需要它们,因为它们速度更快,尤其适用于numpy数组。应用于python扩展时,应小心处理python内置函数。