【问题标题】:Overwriting an array in Numpy function Python在 Numpy 函数 Python 中覆盖数组
【发布时间】:2023-03-06 07:08:01
【问题描述】:

我正在尝试编写一个numpy 函数,它会自行迭代以更新其函数的值。例如,如果 Random_numb 等于 [50, 74, 5, 69, 50]。所以计算会像10* 50 = 500 进行第一次计算,公式为Starting_val = Starting_val * Random_numb。 Starting_Val 将等于500,因此对于第二次计算,它将为500 * 74 = 37000。将 Startin_Val500 更新为 37000。在进行计算时迭代 Random_numb,使用元素 1:50 用于计算 1,元素 2 74 用于计算 2,依此类推。计算将一直持续到 Random_numb 数组的末尾。

import numpy as np
Starting_val = 10
Random_numb = random.randint(100, size=(5))
Starting_val = Starting_val * Random_numb 

【问题讨论】:

    标签: python arrays function numpy random


    【解决方案1】:

    您正在寻找的IIUC prod

    import numpy as np
    
    Starting_val = 10
    Random_numb = np.array([50, 74, 5, 69, 50])
    
    Random_numb.prod(initial=Starting_val)
    #638250000
    

    如果您对数组的相乘值感兴趣,它将是cumprod

    Starting_val * Random_numb.cumprod()
    # array([      500,     37000,    185000,  12765000, 638250000])
    

    【讨论】:

    • 谢谢有没有办法可以像Starting_val = Starting_val + Starting_val * Random_numb/10那样通过乘法除法和加法来执行更高级的算术运算。
    • 你到底需要什么:只有一个值(如上面的prod)还是整个数组(如cumprod)?最好为示例提供所需的输出。
    • 我已经发布了一个关于它的新问题,我将不胜感激如果你能看一下,也许它更清楚。 stackoverflow.com/questions/66091981/…
    【解决方案2】:

    在这里,您只是将 Starting_val 与您的随机数数组相乘。您不是每次都更新 Starting_val。试试下面的代码

    for i in range(len(Random_numb)):
        Random_numb[i] *= Starting_val
        Starting_val = Random_numb[i]
    

    希望这能解决您的问题!

    【讨论】:

    • 我尽量不使用 for 循环,而是使用 numpy,因为它更快,但谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多