【发布时间】:2018-01-15 15:51:59
【问题描述】:
我是结构化数组的新手,但我认为这正是我所需要的。
我有一个 numpy 数组,其中每个条目都包含一个减号计数器和一个包含加号计数器的数组。它们是在一个过程中填充的。在此过程结束时,我想通过减号计数器将每个单元格的所有加号计数器单元格除以,并将其保存在一个数组中,并在每个条目中计算此计算的结果。
所以我认为有更好的方法来创建三个具有相同大小的不同数组。让我们假设我的数组是这种形式:
import numpy as np
import itertools
plusArr = np.ones((20 ,39, 90))
minusArr = np.ones((20 ,39, 90))
resultArr = np.zeros((20 ,39, 90))
然后单元格将被数字填充。最后我做了类似的事情:
for i in itertools.product(np.arange(0,20,1),np.arange(0,39,1),np.arange(0,90,1)):
resultArr[i[0]][i[1]][i[2]] = plusArr[i[0]][i[1]][i[2]]/minusArr[i[0]][i[1]][i[2]]
print(resultArr)
这可行,但在填充过程中,为减号和加号数组查找相同的条目位置非常耗时。所以我想也许有一个带有三元组而不是i int 条目的结构化数组。在每一个三元组中,第一个条目是加号计数器,第二个是减号计数器,最后一个条目是0,直到填充过程完成,可以用正负条目相除的结果填充。
作为一个小问题。如果我的计数器条目之一是 0,那么我想填充在此位置没有零条目的数组条目的结果单元格。有没有一种聪明的 numpy 方法可以做到这一点,或者只是一个 if 条件?
【问题讨论】:
-
答案看起来不错,但可以肯定的是,您应该给我们举一个小例子 - 具有真实价值和您的期望。没有人想显示或测试 (20,39,90) 大小的数组。另外我不明白为什么你的东西
structured数组会帮助你。对于数学,您必须将字段视为单独的数组,您已经拥有了。