【问题标题】:Storing values for each iteration Numpy Python存储每次迭代的值 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)

【问题讨论】:

  • 那么问题或问题是什么?

标签: python arrays numpy while-loop 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 ])
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多