numpy zeros是如何实现参数shape的?

1 投票
1 回答
620 浏览
提问于 2025-04-16 06:06

我想实现一个类似的功能,希望能接受我传给 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 个回答

1

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用它。这个过程可能会涉及到很多步骤,比如读取数据、处理数据、再把数据输出到其他地方。为了让这个过程更简单,我们可以使用一些工具和方法来帮助我们。

比如说,如果我们想从一个文件中读取数据,我们可以使用一些特定的命令来打开这个文件,然后把里面的内容读出来。接着,我们可能需要对这些数据进行一些操作,比如过滤掉不需要的信息,或者把数据转换成我们想要的格式。最后,我们可以把处理好的数据保存到另一个文件,或者直接显示在屏幕上。

在这个过程中,理解每一步的作用是非常重要的。这样我们才能更好地控制数据的流动,确保每一步都能顺利进行。

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]])

撰写回答