【问题标题】:Numpy: How to scale an integer array by an integer value?Numpy:如何按整数值缩放整数数组?
【发布时间】:2012-12-06 03:33:14
【问题描述】:

我有一个最大值为 num 的 numpy 数组。我想通过 newMaxValue/num 缩放数组中的所有值,以便数组的新最大值是 newMaxValue。我试图将数组转换为浮点数并在之后进行除法,但我似乎无法成功地对其进行除法和相乘。我总是以一个零值数组结束。 这样做的正确方法是什么? 谢谢

【问题讨论】:

    标签: python arrays numpy multidimensional-array integer-division


    【解决方案1】:

    确保将最大值转换为 float:

    >>> from numpy import array
    >>> a = array([1, 2, 3, 4, 5])
    >>> new_max = 6 
    >>> a / max(a)            # This is probably what happens to you
    array([0, 0, 0, 0, 1])
    >>> a / float(max(a))     # Convert that integer to a float and it'll work
    array([ 0.2,  0.4,  0.6,  0.8,  1. ])
    >>> a / float(max(a)) * new_max
    array([ 1.2,  2.4,  3.6,  4.8,  6. ])
    

    【讨论】:

      【解决方案2】:
      import numpy as np
      newMax = 20
      myarr = np.random.randint(10, size=(10,2))
      newarr = (myarr/float(np.amax(myarr))*newMax
      

      PS:贴出你的代码,你可能犯了一个简单的编码错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2017-04-27
        相关资源
        最近更新 更多