我有一系列二进制NumPy数组(在给定时间表示多云(1s)和清晰(0s)天空像素)并将它们加在一起以找到每个像素中存在云的观测总数。
我现在想要找出云的百分比(云的数量(1s)/总观察值* 100)但是不能使用NumPy数组在Python中使用它,因为我想修改原始变量。
到目前为止我的(简化)代码是:
import numpy as np
arr1 = np.array([1,0,1])
arr2 = np.array([0,0,1])
total1 = np.add(arr1, arr2)
>>> [1 0 2]
total2 = total1 #Purely to make multiple to elaborate my issue
variables = [total1, total2]
for x in variables:
x = x + 100
total1
>>> [1 0 2]
您基本上可以看到total1
变量尚未更新。它适用于以下内容:
for x in variables:
x += 100
total1
>>> [201, 200, 202]
但我不想将值增加100,我想计算百分比,例如:
for x in variables:
x = x / 1 * 100 #I have simplified the maths for ease of reading
#This is my desired output - note how total1 is updated, not created
total1
>>> [100, 0, 200]
但这不起作用。我以这种方式访问变量,因为我有2个以上的变量,并且我试图自动化我的代码来运行n个变量(变量名称来自total1> total n )。
答案 0 :(得分:0)
以下代码将创建数组,将它们添加到一起并将每个元素除以100.对于百分比,您需要知道条目数。您可以使用3-D数组并使用numpy的sum / average等函数。
def __init__(self, object_list=None) : # use corresponding classes attributes.
if self.name_of_your_variable:
self.name_of_your_variable= [] # or proper value
如果您可以将输入视为3d堆栈图像(只是一个疯狂的猜测),您可以执行以下操作:
import numpy as np
a = np.array([1,0,1])
b = np.array([0,0,1])
c = (a+b)/100
根据输入,这当然可以变得更加简单。我只是把它放在这里,以显示每一步。
答案 1 :(得分:0)
如果您只想让添加功能就位:
for i in range(len(variables)):
variables[i]+=100
应该做的伎俩。注意,做这样的事情是非常低效的。