【问题标题】:How to save the results of a for-loop to a vector in Python?如何将for循环的结果保存到Python中的向量?
【发布时间】:2017-07-03 22:12:57
【问题描述】:

我生成了随机数,并轻松计算了它们的平均值。但是,我的问题是,我怎样才能看到我生成的数字?我想将这些数字保存到向量中。我该怎么做?

这是我的代码:

import random

print ("#n\tmean")

for n in (1,10,100):
        sum = 0
        mean = 0

        for i in range(n):
                sum += random.random()
                mean = sum / n

        print ("%d\t%g\t" % (n, mean))

提前谢谢你!

【问题讨论】:

  • 什么是“向量”?你是说列表吗?
  • 术语“向量”在您的上下文中不是很合适。无论如何,您似乎需要将一堆值存储在一个变量中。为此,如果您想在之后对其进行数学运算,您可以使用列表或 numpy 数组

标签: python python-3.x for-loop


【解决方案1】:

使用列表保存所有结果:

results = []
for i in range(n):
sum += random.random()
mean = sum / n
results.append(mean)

然后通过以下方式获取输出数组:

np.hstack(results)

【讨论】:

    【解决方案2】:

    您可以使用列表推导在一行中生成 1、10、100 的随机平均值:

    import random
    
    result = [(n,sum(random.random() for _ in range(n))/n) for n in (1,10,100)]
    
    
    print(result)
    

    一种可能的输出:

    [(1, 0.1269484085194036), (10, 0.6572300932440089), (100, 0.4796109974064649)]
    

    random.random() for _ in range(n) 是生成器推导式,它为sum 提供数据,除以n 得到均值,包裹在外循环中并创建具有值/均值的元组

    【讨论】:

      【解决方案3】:

      使用 numpy 包

      import numpy as np 
      
      my_numbers = np.random.uniform(0, 1, 100)
      print np.mean(my_numbers)
      

      【讨论】:

        【解决方案4】:

        如果你想避免 numpy,我认为你需要这样的东西。

        import random
        
        print ("#n\tmean")
        meansList = []
        for n in (1,10,100):
                sum = 0
                mean = 0
        
                for i in range(n):
                        sum += random.random()
                        mean = sum / n
        
                meansList.append(mean)
        print meansList
        

        【讨论】:

          【解决方案5】:

          使用list comprehensions

          import random
          
          n = 100
          l = [random.random() for _ in range(n)]
          mean = sum(l)/100
          

          【讨论】:

          • 这和 Python 差不多
          • 谢谢,这正是我要找的!我怎样才能把整个代码放在一个循环中?我的意思是,如果 n = (10, 100, 1000, 10000),我怎样才能得到 l(i) 个列表(其中 i=1,...,len(n))?
          【解决方案6】:

          试试 python 的内置数据结构列表,我认为它接近向量并且对你有用。

          vector = list()
          
          //in the for loop
          
              r = random.random()  
              vector.append(r)
          

          还要注意,列表可以附加列表,因为您有两个 for 循环。例如,您可以执行类似的操作

          outer_vector.append(inner_vector)
          

          【讨论】:

            猜你喜欢
            • 2014-12-07
            • 1970-01-01
            • 2019-11-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多