gpt4 book ai didi

python - 以有效的方式用大小为 (k,m) 的 n 矩阵构建大小为 (n*k, m) 的数组

转载 作者:行者123 更新时间:2023-12-01 22:48:50 26 4
gpt4 key购买 nike

我有三个数组 (A,B,C),大小为 (2,4),我想构建一个数组 (X),大小为 (2*3 >, 4) 和他们在一起。我想从 A 构建 X 的第一行,从 B 构建第二行,从 C 构建第三行。然后,从 A 构建第四行,从 B 构建 5 行,从 C 构建 6 行。

import numpy as np

A = np.array([[0, 2, 1, 2],
[3, 1, 4, 3]])
B = np.array([[1, 2, 1, 0],
[0, 4, 3, 1]])
C = np.array([[0, 4, 3, 2],
[3, 0, 1, 0]])

现在,我这样做的方法是在数组上使用循环。但是,它效率不高。你有什么建议吗?谢谢。

我的做法是:

X = np.zeros((2*3, 4))
for i in range(2):
X[3*i] = A[i,:]
X[3*i+1] = B[i,:]
X[3*i+2] = C[i,:]
X
array([[0., 2., 1., 2.],
[1., 2., 1., 0.],
[0., 4., 3., 2.],
[3., 1., 4., 3.],
[0., 4., 3., 1.],
[3., 0., 1., 0.]])

此外,有时我有 5、6 个数组,我应该构建大小为 (6*2、4) 的 X。因此,通过这种方式,我必须添加或删除一些代码行才能工作。我正在寻找一种通用且有效的方法。谢谢。

最佳答案

只需组合 numpy.stack + numpy.concatenate功能:

In [296]: np.concatenate(np.stack((A,B,C), axis=1))
Out[296]:
array([[0, 2, 1, 2],
[1, 2, 1, 0],
[0, 1, 0, 0],
[3, 1, 4, 3],
[0, 4, 3, 1],
[4, 4, 3, 4]])

关于python - 以有效的方式用大小为 (k,m) 的 n 矩阵构建大小为 (n*k, m) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74777128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com