gpt4 book ai didi

python - 合并numpy中的行以形成新数组

转载 作者:太空狗 更新时间:2023-10-30 02:24:56 24 4
gpt4 key购买 nike

这是我要完成的示例。我是 python 的新手,并且已经搜索了几个小时以找出我做错了什么。我无法找到我的问题所在。我还很新,可能会搜索错误的短语。如果是这样,你能给我指明正确的方向吗?

我想将 n 个数组组合成一个数组。我想将 x 中的第一行作为组合中的第一行,将 y 中的第一行作为组合中的第二行,将 z 中的第一行作为组合中的第三行,将 x 中的第二行作为组合中的第四行合并等所以我会看起来像这样。

x = [x1 x2 x3]
[x4 x5 x6]
[x7 x8 x9]

y = [y1 y2 y3]
[y4 y5 y6]
[y7 y8 y9]

x = [z1 z2 z3]
[z4 z5 z6]
[z7 z8 z9]

combined = [x1 x2 x3]
[y1 y2 y3]
[z1 z2 z3]
[x4 x5 x6]
[...]
[z7 z8 z9]

我能想到的最好的是

    import numpy as np

x = np.random.rand(6,3)
y = np.random.rand(6,3)
z = np.random.rand(6,3)

combined = np.zeros((9,3))

for rows in range(len(x)):
combined[0::3] = x[rows,:]
combined[1::3] = y[rows,:]
combined[2::3] = z[rows,:]


print(combined)

所有这一切都是将输入数组的最后一个值写入输出数组中的每第三行,而不是我想要的。我不确定这是否是最好的方法。任何建议都会有所帮助。

*我只是想知道这是可行的,但如果有人知道更高性能的方法,*请告诉我。

import numpy as np

x = np.random.rand(6,3)
y = np.random.rand(6,3)
z = np.random.rand(6,3)

combined = np.zeros((18,3))

for rows in range(6):
combined[rows*3,:] = x[rows,:]
combined[rows*3+1,:] = y[rows,:]
combined[rows*3+2,:] = z[rows,:]

print(combined)

最佳答案

您可以使用列表理解和 zip 来完成此操作:

combined = np.array([row for row_group in zip(x, y, z) for row in row_group])

关于python - 合并numpy中的行以形成新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51019139/

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