Python 用一维变量填充三维numpy数组

Python 用一维变量填充三维numpy数组,python,python-3.x,numpy,numpy-ndarray,Python,Python 3.x,Numpy,Numpy Ndarray,我想填充一个三维numpy数组,它的维数为(?,100100)。第一个尺寸范围在500到1000之间,但事先未知。我可以使用append方法,但这很慢 在第一维度事先未知的情况下,是否还有可能创建这样一个3D numpy数组?numpy数组使用for循环填充 其次,假设我有以下两个numpy数组: import numpy as np arr1 = np.random.randint(0, 100, size=(30, 100, 100)) arr2 = np.random.randint(0,

我想填充一个三维numpy数组,它的维数为(?,100100)。第一个尺寸范围在500到1000之间,但事先未知。我可以使用append方法,但这很慢

在第一维度事先未知的情况下,是否还有可能创建这样一个3D numpy数组?numpy数组使用for循环填充

其次,假设我有以下两个numpy数组:

import numpy as np
arr1 = np.random.randint(0, 100, size=(30, 100, 100))
arr2 = np.random.randint(0, 100, size=(50, 100, 100))

如何沿第一维连接
arr1
arr2
,使生成的数组具有形状(80、100、100)?

关于第一个问题,我总是使用np.empty和np.append方法,这两种方法都很好

arr = np.empty((0, 100, 100), int)
arr = np.append(arr,x,axis=0)
关于第二个问题,append同样有效:

arr3  = np.append(arr1, arr2, axis=0)
“连接”也可用:

arr3  = np.concatenate((arr1, arr2), axis=0)

np.concatenate((arr1,arr2),axis=0)
如果需要在循环中定义组件数组,请使用
list.append在列表中收集它们。然后在末尾执行一个
连接
(或者可能是
vstack
堆栈
。@hpaulj我已经在列表中收集了数组,也就是说,我有一个包含2D数组的列表。当我在列表上使用vstack、stack或concatenate时,数组在我不想要的第一维或第二维上被连接。我想要的是,当列表中的数组具有维度(a,b)时,我希望得到一个具有维度(n,a,b)的结果数组。这可能吗?
np.stack
使用一个新维度。
np.append
接受两个参数,稍微调整它们,然后调用
连接((arg1,arg2),axis=axis)
。使用一次就可以了,但是太多的用户试图在循环中使用它。最好收集一个数组列表(list append更有效),并在最后进行一次连接。另外,对于大多数初学者来说,定义初始的“空”数组是一件棘手的事情。关于在列表中存储数据,然后从中生成数组,我确实同意这样做要快得多。