1
比方说,我有3D NumPy的ndarray
与形状(n, 0, 2)
,我想连续填补它连同形状(1,2)
的条目的第一维,使用一些功能像vstack
。“vstack”荷兰国际集团在3D numpy的ndarray
换句话说,我想从(n, 0, 2)
ndarray
转换为(n, m, 2)
之一。但是,由于我不知道m
,我需要一些动态更新我的数组。
可能吗?
比方说,我有3D NumPy的ndarray
与形状(n, 0, 2)
,我想连续填补它连同形状(1,2)
的条目的第一维,使用一些功能像vstack
。“vstack”荷兰国际集团在3D numpy的ndarray
换句话说,我想从(n, 0, 2)
ndarray
转换为(n, m, 2)
之一。但是,由于我不知道m
,我需要一些动态更新我的数组。
可能吗?
要建立一个3D阵列“动态”这是更好地收集子阵列在一个列表,并在年底
In [21]: alist = []
In [22]: for i in range(3):
alist.append(np.arange(i,i+8).reshape(2,4))
....:
In [23]: alist
Out[23]:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[1, 2, 3, 4],
[5, 6, 7, 8]]), array([[2, 3, 4, 5],
[6, 7, 8, 9]])]
一旦收集它们可以在任何兼容的方式连接执行“堆叠”一旦。 np.array
在开始时将它们连接在一个新轴上。
In [24]: np.array(alist)
Out[24]:
array([[[0, 1, 2, 3],
[4, 5, 6, 7]],
[[1, 2, 3, 4],
[5, 6, 7, 8]],
[[2, 3, 4, 5],
[6, 7, 8, 9]]])
In [25]: _.shape
Out[25]: (3, 2, 4)
np.stack
可以做同样的,也可以创建其他新中轴线的位置。
In [26]: np.stack(alist,axis=1).shape
Out[26]: (2, 3, 4)
concatenate
和vstack
加入在现有的轴线。
In [27]: np.concatenate(alist, axis=0).shape
Out[27]: (6, 4)
从具有0维度的数组开始是很差的练习。您不要fill it in
。最好你将它与其他3d阵列连接起来。这是一个缓慢且容易出错的模仿,附加到[]
列表。
请您详细说明一下。大小为'(n,0,2)'的第一个数组有零个元素,并且将继续存在,直到所有维数都大于零。我看不出如何通过添加/填充形状元素'(1,2)'来实现这一点。 –
@HannesOvrén我更新了问题,希望现在更清楚。 – AreTor
我仍然不知道你应该如何从'(n,0,2)'到'(n,1,2)'以'(1,2)'数组作为新数据。前者有'2n'个元素,但后者只有'2'个元素。 –