通过添加额外列表来扩展类似矩阵的numpy数组时出现问题

时间:2018-02-21 08:07:20

标签: python python-2.7 numpy

我编写了以下代码:(1)生成形状none-root的根矩阵,以及(2)生成1000个二进制向量(3, 16),以便在根的末尾添加每个向量矩阵迭代一次一个。

代码如下(python 2.7):

C

矩阵# STEP1: Generate root matrix root = [random.randint(0, 2 ** 16 - 1) for _ in range(16 - 1)] root = [('{0:0' + str(16) + 'b}').format(x) for x in root] root = np.asarray([list(map(int, list(x))) for x in root], dtype=np.uint8) # STEP2: Generate 1000 binary vectors C = [random.randint(0, 2 ** 16 - 1) for _ in range(1000)] C = list(set(C)) C = [('{0:0' + str(16) + 'b}').format(x) for x in C] C = np.asarray([list(map(int, list(x))) for x in C], dtype=np.uint8) # Step3: For each vector of C, append it at the end of root matrix for i in range(1000): batch = root[i:(i + (len(root)))] batch = np.append(batch, C[i]) print(batch) # Continue to process batch after being extended by adding a new vector 如下所示:

C

问题在于[[0 1 1 ..., 0 1 1] [1 0 1 ..., 1 0 1] [0 1 0 ..., 1 1 0] ..., [1 1 0 ..., 1 0 0] [0 0 1 ..., 1 1 0] [1 1 1 ..., 1 1 1]] 将所有向量合并为一个向量,但这不是我想要的。我的目标是通过迭代添加向量np.append(batch, C[i]),将root矩阵从(3, 16)扩展为(4,16)。我怎样才能做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

如果你可以交换它:

batch = root[i:(i + (len(root)))]
batch = np.append(batch, C[i])

为此:

batch = np.append(batch, [C[i]], axis=0)

axis允许您在特定维度上附加两个矩阵。因此,我们将C[i]放入矩阵并将其追加到维度0。

我不确定这个batch = root[i:(i + (len(root)))]的意图是什么,但是每次将batch缩短为根大小的矩阵,因此它的大小不会增加。当你快要接近root时,它会缩小。

C也不总是1000个向量。使它们与众不同会删除一些。