为什么调用np.sum仅返回np.array的最后一个元素而非总和?
问题原因
- 你的
random_array变量在每次循环中都被重新赋值为仅包含单个元素的新数组,前几次循环生成的随机数没有被存储,循环结束后random_array仅保留最后一次循环生成的[0.51249256] np.sum是对当前传入的数组求和,单元素数组的求和结果自然就是元素本身,不是函数逻辑问题,是变量存储逻辑错误。
正确实现示例
写法1:预先生成所有随机数再求和(推荐,numpy向量化写法性能更高)
import numpy as np import random N=4 # 直接生成N个随机数组成的数组 random_array = np.random.random(N) # 打印每个元素 for num in random_array: print([num]) # 求和 print(np.sum(random_array))
写法2:循环累加存储所有元素
import numpy as np import random N=4 # 初始化空列表存所有随机数 random_list = [] for i in range(N): num = random.random() random_list.append(num) print([num]) # 转成数组后求和 random_array = np.array(random_list) print(np.sum(random_array))
内容的提问来源于stack exchange,提问作者SarahT
相关产品推荐
相关产品推荐

