【问题标题】:Python not returning all values to system but replacing it with ...Python 不会将所有值返回给系统,而是将其替换为 ...
【发布时间】:2013-07-08 04:49:09
【问题描述】:

我有一段 Python 代码,它在定义输入参数后将值返回给系统。我对已返回系统的样本数量有疑问。

我有以下代码:

import sys
import numpy.random

def Weibull_Random(alpha,beta,Iterations):

    a=alpha
    b=beta


    weibull_rand=numpy.random.weibull(a,[Iterations])

    rand_sample=((weibull_rand)*b)

    return (rand_sample)

if __name__ == '__main__':
    alpha = float(sys.argv[1])
    beta = float(sys.argv[2])
    Iterations = float(sys.argv[3])
    sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations)))

样本数由Iterations 定义,我们可以将alpha 和beta 设置为一系列不同的数字,比如alpha=2beta=15 来解决这个问题。 如果 Iterations=1000 或更少,则所有数字都将返回给系统。如果Iterations=1001或更大则系统返回

[ 15.33018892  3.22693971  10.02243413 ...,  8.87121152  14.29458731
  15.13458017]

有谁知道如何将所有值返回给系统?

我正在使用带有 Numpy 和 Scipy (pyzo2013b) 的 Windows 7 和 Python 3。

【问题讨论】:

    标签: python windows-7 numpy scipy system


    【解决方案1】:

    这与系统无关,而是由numpy 使用的格式引起的。最简单的解决方法是修改您的脚本以调用 numpy.set_printoptions,例如:

    if __name__ == '__main__':
        alpha = float(sys.argv[1])
        beta = float(sys.argv[2])
        Iterations = float(sys.argv[3])
        numpy.set_printoptions(threshold=Iterations)   # Force threshold to iteration count.
        sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations)))
    

    在这个 sn-p 中,我强制 numpy 将汇总阈值设置为迭代次数。

    【讨论】:

      【解决方案2】:

      如下替换最后一行,你会看到所有的值:

      sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations).tolist()))
      

      【讨论】:

      • 感谢 Falsetru 这也起到了作用,而且速度更快,但它不允许我在另一端用 Matlab 解释我想要的数据,所以我使用了 Brett 的方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2015-03-23
      • 2021-03-18
      相关资源
      最近更新 更多