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

时间:2016-08-31 01:35:09

标签: python arrays numpy

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

a = np.array([[[[[[]]]]]])

有没有比明确写括号更好的方法?

4 个答案:

答案 0 :(得分:3)

您可以使用emptyzeros

例如,要创建一个填充零的2x3的新数组,请使用:numpy.zeros(shape=(2,3))

答案 1 :(得分:2)

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

>>> a = np.array([[[[[[]]]]]])
>>> b = np.empty(shape = [1] * 5 + [0])
>>> a.shape == b.shape
True

答案 2 :(得分:1)

您可以直接使用ndarray构造函数:

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

empty变体,因为它似乎更受欢迎:

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

答案 3 :(得分:1)

  

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

唐'吨。迭代地创建数组很慢,因为它必须在每一步创建一个新数组。加ab必须在除连接之外的所有维度中匹配。

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)

要迭代工作,请从空列表开始,然后append到它;然后在最后制作阵列。

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

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