我需要做一個零維的多維數組。創建多維零Python
對於兩(d = 2)或三個(d = 3)的尺寸,這是很簡單的我會使用:
a = numpy.zeros(shape=(n,n))
或
a = numpy.zeros(shape=(n,n,n))
如何對我爲更高d ,使長度爲n的數組?
我需要做一個零維的多維數組。創建多維零Python
對於兩(d = 2)或三個(d = 3)的尺寸,這是很簡單的我會使用:
a = numpy.zeros(shape=(n,n))
或
a = numpy.zeros(shape=(n,n,n))
如何對我爲更高d ,使長度爲n的數組?
您可以將元組(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的答案更好。
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.]]]])
這真的和我的答案沒有什麼不同,除了你使用的是列表而不是元組...... – mgilson 2013-03-13 18:16:00
關於第二個想法,我真的不知道如何讓你任何'np.zeros'不已經支持。這比'np.zeros(sh)'更好嗎? – mgilson 2013-03-13 18:15:06
@mgilson:你是對的。不需要額外的括號,'np.zeros(sh)'工作。 – 2013-03-13 18:16:41
對,這就是我的意思:) – mgilson 2013-03-13 18:18:00