我想要初始化一个空的6维张量,如下:
a = np.array([[[[[[]]]]]])
有比显式编写括号更好的方法吗?
np.empty(shape = [1] * (dimensions - 1) + [0])
。
例如:>>> a = np.array([[[[[[]]]]]])
>>> b = np.empty(shape = [1] * 5 + [0])
>>> a.shape == b.shape
True
x = np.array([])
使用np.concatenate(a,b,axis=0)迭代地添加那个秩为1的行。
不要这样做。迭代创建数组很慢,因为每一步都必须创建一个新数组。此外,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)
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.]]]]]])
np.concatenate
从底层构建这样的张量是否是一个好方法。 - Lenar Hoytnp.concatenate(a,b,axis=0)
迭代地添加那个秩为1的行。 - Lenar Hoytnp.empty
分配所有内容。如果您需要“从底部向上”构建它,则最好使用嵌套的Python列表,然后在结果上调用np.array
。 - Jaime