修改/覆盖NumPy数组

时间:2016-10-27 13:02:39

标签: python arrays numpy

我有一系列二进制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 )。

2 个答案:

答案 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

应该做的伎俩。注意,做这样的事情是非常低效的。