代码之家  ›  专栏  ›  技术社区  ›  Neil G

numpy零是如何实现参数形状的?

  •  1
  • Neil G  · 技术社区  · 14 年前

    我想要实现一个类似的函数,并且想要接受我传递给的数组或数字 numpy.ones .

    具体来说,我想这样做:

    def halfs(shape):
        shape = numpy.concatenate([2], shape)
        return 0.5 * numpy.ones(shape)
    

    输入输出对示例:

    # default
    In [5]: beta_jeffreys()
    Out[5]: array([-0.5, -0.5])
    
    # scalar
    In [5]: beta_jeffreys(3)
    Out[3]: 
    array([[-0.5, -0.5, -0.5],
           [-0.5, -0.5, -0.5]])
    
    # vector (1)
    In [3]: beta_jeffreys((3,))
    Out[3]: 
    array([[-0.5, -0.5, -0.5],
           [-0.5, -0.5, -0.5]])
    
    # vector (2)
    In [7]: beta_jeffreys((2,3))
    Out[7]: 
    array([[[-0.5, -0.5, -0.5],
            [-0.5, -0.5, -0.5]],
    
           [[-0.5, -0.5, -0.5],
            [-0.5, -0.5, -0.5]]])
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   eumiro    14 年前
    def halfs(shape=()):
        if isinstance(shape, tuple):
            return 0.5 * numpy.ones((2,) + shape)
        else:
            return 0.5 * numpy.ones((2, shape))
    
    
    
    a = numpy.arange(5)
    # array([0, 1, 2, 3, 4])
    
    
    halfs(a.shape)
    #array([[ 0.5,  0.5,  0.5,  0.5,  0.5],
    #       [ 0.5,  0.5,  0.5,  0.5,  0.5]])
    
    halfs(3)
    #array([[ 0.5,  0.5,  0.5],
    #       [ 0.5,  0.5,  0.5]])