Python 如何初始化具有给定维数的空Numpy数组?

Python 如何初始化具有给定维数的空Numpy数组?,python,arrays,numpy,Python,Arrays,Numpy,我基本上想初始化一个空的6-张量,如下所示: a = np.array([[[[[[]]]]]]) 有没有比显式编写括号更好的方法?您可以使用或 例如,要创建一个新的2x3数组,用零填充,请使用:numpy.zeros(shape=(2,3))您可以直接使用构造函数: numpy.ndarray(shape=(1,) * 6) 或者是变体,因为它似乎更受欢迎: numpy.empty(shape=(1,) * 6) 使用np.concatenate(a,b,axis=0)迭代添加该秩-1的

我基本上想初始化一个空的6-张量,如下所示:

a = np.array([[[[[[]]]]]])
有没有比显式编写括号更好的方法?

您可以使用或


例如,要创建一个新的2x3数组,用零填充,请使用:
numpy.zeros(shape=(2,3))
您可以直接使用构造函数:

numpy.ndarray(shape=(1,) * 6)
或者是变体,因为它似乎更受欢迎:

numpy.empty(shape=(1,) * 6)

使用np.concatenate(a,b,axis=0)迭代添加该秩-1的行

不要。迭代创建数组的速度很慢,因为它必须在每一步创建一个新数组。Plus
a
b
必须在除串联维度外的所有维度上匹配

np.concatenate((np.array([[[]]]),np.array([1,2,3])), axis=0)
会给你尺寸误差

唯一可以连接到这样一个数组的是一个大小为0维的数组

In [348]: np.concatenate((np.array([[]]),np.array([[]])),axis=0)
Out[348]: array([], shape=(2, 0), dtype=float64)
In [349]: np.concatenate((np.array([[]]),np.array([[1,2]])),axis=0)
------
ValueError: all the input array dimensions except for the concatenation axis must match exactly
In [354]: np.array([[]])
Out[354]: array([], shape=(1, 0), dtype=float64)
In [355]: np.concatenate((np.zeros((1,0)),np.zeros((3,0))),axis=0)
Out[355]: array([], shape=(4, 0), dtype=float64)
要以迭代方式工作,请从空列表开始,然后向其追加
;然后在最后制作数组

a=np.zero((1,1,1,1,1,0))
可以在最后一个轴上与另一个
np.one((1,1,1,1,1,n))
数组连接

In [363]: np.concatenate((a,np.array([[[[[[1,2,3]]]]]])),axis=-1)
Out[363]: array([[[[[[ 1.,  2.,  3.]]]]]])

您可以执行类似于
np.empty(shape=[1]*(dimensions-1)+[0])
的操作。 例如:

>>>a=np.array([][[][[][][][][][][][][][][][][][][][][][][][][][][][][][][][][]]
>>>b=np.empty(形状=[1]*5+[0])
>>>a.形状==b.形状
真的

另外,我也不完全确定使用
np.concatenate
从下到上构造这样一个张量是否是一种好方法。你将如何处理这个空数组?使用
np.concatenate(a,b,axis=0)
迭代添加秩1的行。这是一个非常,非常糟糕的主意:如果你知道张量的最终大小,那么从一开始就用
np.empty
分配所有张量。如果需要“自下而上”构建它,那么最好使用嵌套的Python列表,然后对结果调用
np.array