Python 如何组合这两个numpy阵列?

Python 如何组合这两个numpy阵列?,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,如何组合这两个阵列: x = np.asarray([[1.0, 1.1, 1.2, 1.3], [2.0, 2.1, 2.2, 2.3], [3.0, 3.1, 3.2, 3.3], [4.0, 4.1, 4.2, 4.3], [5.0, 5.1, 5.2, 5.3]]) y = np.asarray([[0.1], [0.2], [0.3], [0.4], [0.5]]) 变成这样: xy = [[0.1, [1.0, 1.1, 1.2, 1.3]],

如何组合这两个阵列:

x = np.asarray([[1.0, 1.1, 1.2, 1.3], [2.0, 2.1, 2.2, 2.3], [3.0, 3.1, 3.2, 3.3], 
                 [4.0, 4.1, 4.2, 4.3], [5.0, 5.1, 5.2, 5.3]])
y = np.asarray([[0.1], [0.2], [0.3], [0.4], [0.5]])
变成这样:

xy = [[0.1, [1.0, 1.1, 1.2, 1.3]], [0.2, [2.0, 2.1, 2.2, 2.3]...
谢谢你的帮助

有人建议我发布我尝试过的代码,我意识到我忘记了:

xy = np.array(list(zip(x, y)))
这是我当前的解决方案,但效率极低。

您可以使用它来组合

[[a,b] for a,b in zip(y,x)]
输出:

你可以用它来组合

[[a,b] for a,b in zip(y,x)]
输出:


对于大型阵列,纯numpy解决方案将比列表理解快得多

我不得不说,您的用例毫无意义,因为将这些阵列放入单个数据结构中是没有逻辑的,我相信您应该重新检查您的设计

就像@user2357112-supports-Monica巧妙地暗示的那样,这很可能是一个错误。看看这是否真的是你想要解决的问题,而不是别的问题。如果你想要别的东西,试着问一下

我强烈建议在继续之前检查一下你想做什么,因为你会把自己放在一个设计糟糕的地方


除此之外,还有一个解决方案

import numpy as np


x = np.asarray([[1.0, 1.1, 1.2, 1.3], [2.0, 2.1, 2.2, 2.3], [3.0, 3.1, 3.2, 3.3],
                 [4.0, 4.1, 4.2, 4.3], [5.0, 5.1, 5.2, 5.3]])
y = np.asarray([[0.1], [0.2], [0.3], [0.4], [0.5]])


xy = np.hstack([y, x])
print(xy)
印刷品


对于大型阵列,纯numpy解决方案将比列表理解快得多

我不得不说,您的用例毫无意义,因为将这些阵列放入单个数据结构中是没有逻辑的,我相信您应该重新检查您的设计

就像@user2357112-supports-Monica巧妙地暗示的那样,这很可能是一个错误。看看这是否真的是你想要解决的问题,而不是别的问题。如果你想要别的东西,试着问一下

我强烈建议在继续之前检查一下你想做什么,因为你会把自己放在一个设计糟糕的地方


除此之外,还有一个解决方案

import numpy as np


x = np.asarray([[1.0, 1.1, 1.2, 1.3], [2.0, 2.1, 2.2, 2.3], [3.0, 3.1, 3.2, 3.3],
                 [4.0, 4.1, 4.2, 4.3], [5.0, 5.1, 5.2, 5.3]])
y = np.asarray([[0.1], [0.2], [0.3], [0.4], [0.5]])


xy = np.hstack([y, x])
print(xy)
印刷品


你忘了发布你尝试过的代码。在NumPy中,原来的两个单独的数组将更加方便和高效。这将是理想的,但是我必须随机化两个数组,因此需要一些方法首先将它们配对。不,你没有。如果你说的是按相同的顺序洗牌它们,你可以通过生成一个随机排列数组并将该排列应用于两个数组来实现。你可以创建一个(5,2)对象数据类型数组并分配这些数组(要小心)。或生成(5,)形状结构化数组,并将数组指定给字段。但是,如果您所做的只是洗牌,我同意最好将它们分开。您忘记发布您尝试过的代码。在NumPy中,原来的两个单独的数组将更方便、更高效地使用。这将是理想的,但是我必须将两个数组随机化,因此需要一些方法首先将它们配对。不,您没有。如果你说的是按相同的顺序洗牌它们,你可以通过生成一个随机排列数组并将该排列应用于两个数组来实现。你可以创建一个(5,2)对象数据类型数组并分配这些数组(要小心)。或生成(5,)形状结构化数组,并将数组指定给字段。但如果你所做的只是洗牌,我同意最好把它们分开。