Python将2D numpy数组附加到3D

Python将2D numpy数组附加到3D,python,arrays,numpy,Python,Arrays,Numpy,我遇到了一个理解numpy数组的问题。 我有一个数据集,读取时如下所示: [ [ F0, F1, F2, F3 ... F22], [ G0, G1, G2, G3 ... G22], [ H0, H1, H2, H3 ... H22], [ I0, I1, I2, I3 ... I22], [ J0, J1, J2, J3 ... J22] ] 我想把这些转变成“三人一组”: 到目前为止,我已经编写了以下代码: data = loadtxt('./trainin

我遇到了一个理解numpy数组的问题。 我有一个数据集,读取时如下所示:

[
   [ F0, F1, F2, F3 ... F22],
   [ G0, G1, G2, G3 ... G22],
   [ H0, H1, H2, H3 ... H22],
   [ I0, I1, I2, I3 ... I22],
   [ J0, J1, J2, J3 ... J22]
]
我想把这些转变成“三人一组”:

到目前为止,我已经编写了以下代码:

data = loadtxt('./training_data/set_0.csv', delimiter=';')
batch_size=3
features=17
labels=6

trainX = np.empty((0,batch_size, features), float)
for i in range(0, len(data)-batch_size):
    row_X = data[i:i+batch_size,0:features]
    trainX = np.append(trainX, row_X)

print(trainX[0])
记录row_X的形状可以得到我想要的
(3,17)
。 但是
trainX
变量似乎包含了这些数组的平面组合,我希望
trainX[0]
的形状是
(批量大小,特性)

输出

[array([[1, 2, 3, 4, 5],
        [2, 3, 4, 5, 6],
        [3, 4, 5, 6, 7]]),
 array([[2, 3, 4, 5, 6],
        [3, 4, 5, 6, 7],
        [4, 5, 6, 7, 8]]),
 array([[3, 4, 5, 6, 7],
        [4, 5, 6, 7, 8],
        [5, 6, 7, 8, 9]]),
 array([[4, 5, 6, 7, 8],
        [5, 6, 7, 8, 9],
        [6, 7, 8, 9, 0]])]
输出

[array([[1, 2, 3, 4, 5],
        [2, 3, 4, 5, 6],
        [3, 4, 5, 6, 7]]),
 array([[2, 3, 4, 5, 6],
        [3, 4, 5, 6, 7],
        [4, 5, 6, 7, 8]]),
 array([[3, 4, 5, 6, 7],
        [4, 5, 6, 7, 8],
        [5, 6, 7, 8, 9]]),
 array([[4, 5, 6, 7, 8],
        [5, 6, 7, 8, 9],
        [6, 7, 8, 9, 0]])]

假设您有一个二维numpy数组,如下所示:

arr = array([[7, 9, 4, 1, 0],
             [9, 5, 1, 8, 5],
             [6, 1, 9, 7, 1],
             [2, 8, 4, 8, 7],
             [1, 2, 6, 1, 8],
             [0, 2, 7, 0, 2]])
要将其转换为三维阵列,您可以使用
重塑
功能:

arr.reshape(3, 2, -1)
这将为您提供三个“批次”,每个批次两行

array([[[7, 9, 4, 1, 0],
        [9, 5, 1, 8, 5]],

       [[6, 1, 9, 7, 1],
        [2, 8, 4, 8, 7]],

       [[1, 2, 6, 1, 8],
        [0, 2, 7, 0, 2]]])

最后一个参数
-1
告诉
重塑
,根据数组中元素的实际数量和其他维度的大小,计算第三维的大小。

假设您有一个二维numpy数组,如下所示:

arr = array([[7, 9, 4, 1, 0],
             [9, 5, 1, 8, 5],
             [6, 1, 9, 7, 1],
             [2, 8, 4, 8, 7],
             [1, 2, 6, 1, 8],
             [0, 2, 7, 0, 2]])
要将其转换为三维阵列,您可以使用
重塑
功能:

arr.reshape(3, 2, -1)
这将为您提供三个“批次”,每个批次两行

array([[[7, 9, 4, 1, 0],
        [9, 5, 1, 8, 5]],

       [[6, 1, 9, 7, 1],
        [2, 8, 4, 8, 7]],

       [[1, 2, 6, 1, 8],
        [0, 2, 7, 0, 2]]])

最后一个参数
-1
告诉
重塑
,根据数组中元素的实际数量和其他维度的大小来计算第三维的大小。

使用tensorflow/pytorch/sklearn?你需要的似乎是一个动人的故事window@sai是的,keras/TensorFlow您是否错过了
np中的这一点。追加
文档:如果未给出
,则
arr
值在使用前均被展平。?如果确实包含
,则维度数必须匹配(因为它只调用
np.concatenate
)。再读一遍文档!与tensorflow/pytorch/sklearn合作?你需要的似乎是一个动人的故事window@sai是的,keras/TensorFlow您是否错过了
np中的这一点。追加
文档:如果未给出
,则
arr
值在使用前均被展平。?如果确实包含
,则维度数必须匹配(因为它只调用
np.concatenate
)。再读一遍文档!