我想在python中创建一个零的4维数组。 我知道如何为一个正方形数组做这个,但我希望列表有不同的长度。
现在我用它:
numpy.zeros((200,)*4)
这给了他们所有的长度200,但我想有200,20,100,20
长度,因为现在我的数组中有很多零,我不使用
答案 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的答案。不过,两者现在都可以使用!