python中的4维零点数组

时间:2015-04-28 13:48:19

标签: python arrays numpy

我想在python中创建一个零的4维数组。 我知道如何为一个正方形数组做这个,但我希望列表有不同的长度。

现在我用它:

numpy.zeros((200,)*4)

这给了他们所有的长度200,但我想有200,20,100,20长度,因为现在我的数组中有很多零,我不使用

3 个答案:

答案 0 :(得分:7)

您可以使用np.full

>>> np.full((200,20,10,20), 0)
  

<强> numpy.full

     

返回一个给定形状和类型的新数组,填充fill_value。

示例:

>>> np.full((1,3,2,4), 0)
array([[[[ 0.,  0.,  0.,  0.],
         [ 0.,  0.,  0.,  0.]],

        [[ 0.,  0.,  0.,  0.],
         [ 0.,  0.,  0.,  0.]],

        [[ 0.,  0.,  0.,  0.],
         [ 0.,  0.,  0.,  0.]]]])

答案 1 :(得分:4)

您可以传递多个arg进行整形:

  

shape:int或int的序列   新阵列的形状,例如(2,3)或2。

In [26]: arr = np.zeros((200, 20, 10, 20))

In [27]: arr.shape
Out[27]: (200, 20, 10, 20)

当您有大尺寸时,它似乎也更有效:

In [43]: timeit arr = np.full((200, 100, 100, 100),0)
1 loops, best of 3: 232 ms per loop

In [44]: timeit arr = np.zeros((200, 100, 100, 100))
100000 loops, best of 3: 12.6 µs per loop
In [45]: timeit arr = np.zeros((500, 100, 100, 100))
100000 loops, best of 3: 13.5 µs per loop    
In [46]: timeit arr = np.full((500, 100, 100, 100),0)
1 loops, best of 3: 1.19 s per loop

答案 2 :(得分:0)

从Python v.3.50开始,使用np.full命令返回

FutureWarning: in the future, full((1, 3, 2, 4), 0) will return an array of dtype('int32')

基于此,我插上了@ Padriac的答案。不过,两者现在都可以使用!