存储每次迭代的值 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在数组上进行迭代——修改数组的值