连接不同大小的 ndarray

Concatenate Different Sized ndarrays

简单的数据结构问题,但我找不到正确的 python 语法。给定 numpy 数组(在我的实际使用中,要从带有 np.loadtxt 的文本文件中读取)例如

A=[[1,2],[3,4]]
B=[[5,6],[7,8],[9,10]]
C=[[11,12],[13,14],[15,10]]

即 2D,但一维的所有长度都不同。我如何将它们组合成一个 3D 数组,例如 combinedArrays[0] returns A,或 combinedArrays[:,0] returns 所有第一行,等等?

我尝试了 np.appendnp.stacknp.concatenate,但其中 none 有效。我可以用零扩展较小的矩阵,然后只填充顶部,但那会无缘无故地携带大量额外的零。

我强烈推荐你使用tensorflow.ragged.constant()

您可以使用以下代码创建一个:

import tensorflow as tf
t = [A,B,C]
digits = tf.ragged.constant(t)

然后你不仅可以按照你想要的方式切片,还可以使用tensorflow库中的其他方法,例如使用.numpy()

将其转换为numpy数组

更多信息请参考:Link

import numpy as np

A=np.array([[1,2],[3,4]])
B=np.array([[5,6],[7,8],[9,10]])
C=np.array([[11,12],[13,14],[15,10]])

关于 numpy 数组的 numpy 数组:

as_array = np.array([A,B,C])
print(as_array)
[array([[1, 2],
        [3, 4]]) array([[ 5,  6],
                        [ 7,  8],
                        [ 9, 10]]) array([[11, 12],
                                          [13, 14],
                                          [15, 10]])]

数组列表呢:

as_list = [A,B,C]
as_list.append(as_list)
print(as_list)
[array([[1, 2],
       [3, 4]]), array([[ 5,  6],
       [ 7,  8],
       [ 9, 10]]), array([[11, 12],
       [13, 14],
       [15, 10]]), [...]]

你也可以使用字典。