gpt4 book ai didi

python - 修改/覆盖 NumPy 数组

转载 作者:行者123 更新时间:2023-12-05 07:47:00 26 4
gpt4 key购买 nike

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

最佳答案

以下代码将创建数组,将它们相加并将每个元素除以 100。对于百分比,您需要知道条目数。您可以使用 3 维数组并使用 numpy 的求和/平均等函数。

import numpy as np
a = np.array([1,0,1])
b = np.array([0,0,1])
c = (a+b)/100

如果您可以将您的输入安排为 3d 图像堆栈(只是一个疯狂的猜测),您可以执行以下操作:

import numpy as np

a = np.array([[1,0,1],[0,0,0],[0,0,1]])
b = np.array([[0,0,0,],[0,1,0],[1,1,1]])
c = np.empty((2,3,3))
c[0]=a
c[1]=b

d = (c.sum(axis=0)/c.shape[0])*100

这当然可以根据输入变得更简单。我只是把它放在这里,以显示每个步骤。

关于python - 修改/覆盖 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40285296/

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