【发布时间】:2013-03-01 20:30:09
【问题描述】:
我需要创建一个多维零数组。
对于两个 (D=2) 或三个 (D=3) 维度,这很简单,我会使用:
a = numpy.zeros(shape=(n,n))
或
a = numpy.zeros(shape=(n,n,n))
对于更高的 D,我如何制作长度为 n 的数组?
【问题讨论】:
标签: python arrays multidimensional-array numpy
我需要创建一个多维零数组。
对于两个 (D=2) 或三个 (D=3) 维度,这很简单,我会使用:
a = numpy.zeros(shape=(n,n))
或
a = numpy.zeros(shape=(n,n,n))
对于更高的 D,我如何制作长度为 n 的数组?
【问题讨论】:
标签: python arrays multidimensional-array numpy
您可以将元组 (n,) 乘以所需的维数。例如:
>>> import numpy as np
>>> N=2
>>> np.zeros((N,)*1)
array([ 0., 0.])
>>> np.zeros((N,)*2)
array([[ 0., 0.],
[ 0., 0.]])
>>> np.zeros((N,)*3)
array([[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]])
【讨论】:
>>> sh = (10, 10, 10, 10)
>>> z1 = zeros(10000).reshape(*sh)
>>> z1.shape
(10, 10, 10, 10)
编辑:虽然上面没有错,但只是过分了。 @mgilson 的答案更好。
【讨论】:
np.zeros 尚不支持的任何东西。这比np.zeros(sh) 好在哪里?
np.zeros(sh) 有效。
In [4]: import numpy
In [5]: n = 2
In [6]: d = 4
In [7]: a = numpy.zeros(shape=[n]*d)
In [8]: a
Out[8]:
array([[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]],
[[[ 0., 0.],
[ 0., 0.]],
[[ 0., 0.],
[ 0., 0.]]]])
【讨论】:
您可以使用方括号制作多维零数组
array_4D = np.zeros([3,3,3,3])
【讨论】: