存储每次迭代的值 Numpy Python

Posted

技术标签:

【中文标题】存储每次迭代的值 Numpy Python【英文标题】:Storing values for each iteration Numpy Python 【发布时间】:2021-06-01 14:37:40 【问题描述】:

下面的代码通过Vals 函数,它对Numbers 值进行分类,并在排序后将所有总和相加。我正在尝试将 SUM 值附加到 T_SUM 以存储每个排序的每个 SUM 的值。

Vals= np.arange(start=60, stop=105, step=5)
Numbers = np.array([123.6,       130 ,       150,        110.3748,     111.6992976,
 102.3165566,   97.81462811 , 89.50038472 , 96.48141473 , 90.49956702, 65])
T_Sum = np.array([])
p= 0 

while len(Vals) != p:
    Numbers= np.where(Numbers >= Vals[p],Numbers ,0 )
    p = p + 1
    SUM = np.sum(Numbers)
    T_Sum = np.concatenate((T_Sum, SUM))

print(T_Sum)

【问题讨论】:

那么问题或问题是什么? 【参考方案1】:

这应该做同样的事情:

Vals= np.arange(start=60, stop=105, step=5)
Numbers = np.array([123.6,       130 ,       150,        110.3748,     111.6992976,
 102.3165566,   97.81462811 , 89.50038472 , 96.48141473 , 90.49956702, 65])
T_sum = np.empty(len(Vals))
count = 0

for i in Vals:
    Numbers= np.where(Numbers >= Vals[p],Numbers ,0 )
    SUM = np.sum(Numbers)
    T_sum[count] = SUM
    count += 1

【讨论】:

【参考方案2】:

您可以使用屏蔽数组来屏蔽您想要的值,然后将它们全部汇总在一行中:

T_Sum = np.ma.masked_array(np.repeat(Numbers[None,:],Vals.size,0),mask=[Numbers<Vals[:,None]]).sum(-1).data

输出:

array([1167.28664878, 1167.28664878, 1102.28664878, 1102.28664878,
       1102.28664878, 1102.28664878, 1012.78626406,  922.28669704,
        727.9906542 ])

【讨论】:

您好,我为这样的 tpic 制作了另一个问题,如果您看一下,我将不胜感激:***.com/questions/66466529/…

以上是关于存储每次迭代的值 Numpy Python的主要内容,如果未能解决你的问题,请参考以下文章

迭代器对象numpy.nditer在数组上进行迭代——修改数组的值

Pyspark - 尝试迭代 numpy 数组时出错

无需在 Python 中迭代即可创建 Numpy 数组

Python:“numpy.amax”与 Python 的“max”:“int”对象不可迭代

python-19-迭代器是个什么东西?

Python Numpy追加数组而不展平