我编写了以下代码:(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)
。我怎样才能做到这一点?
谢谢
答案 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个向量。使它们与众不同会删除一些。