python - 如何将 2 个一维数组转换为一个一维数组,但两个值都应位于一个元素内

标签 python arrays pandas numpy

我真的不知道如何正确表达,所以我提前道歉。 假设我有 2 个一维数组

array1 = [2000, 2100, 2800]
array2 =[20, 80, 40]

现在我如何将它们转换为 python 中的二维数组,如下所示

2dArray = [[2000, 20], [2100, 80], [2800, 40]]

所以 2 个 id 数组看起来就像上面 Python 中的数组。

最佳答案

简单的 NumPy 解决方案 - np.array([...]).T:

In [6]: np.array([a1, a2]).T
Out[6]:
array([[2000,   20],
       [2100,   80],
       [2800,   40]])

另一个 NumPy 解决方案,它使用 vstack()方法:

In [142]: np.vstack((array1, array2)).T
Out[142]:
array([[2000,   20],
       [2100,   80],
       [2800,   40]])

或使用np.column_stack() :

In [144]: np.column_stack([array1, array2])
Out[144]:
array([[2000,   20],
       [2100,   80],
       [2800,   40]])

另一个“慢”解决方案是使用内置 zip()功能?

In [131]: np.array(list(zip(array1, array2)))
Out[131]:
array([[2000,   20],
       [2100,   80],
       [2800,   40]])

说明:

In [132]: list(zip(array1, array2))
Out[132]: [(2000, 20), (2100, 80), (2800, 40)]

两个 1M 元素数组的时序:

In [145]: a1 = np.random.randint(0, 10**6, 10**6)

In [146]: a2 = np.random.randint(0, 10**6, 10**6)

In [147]: a1.shape
Out[147]: (1000000,)

In [148]: a2.shape
Out[148]: (1000000,)

In [149]: %timeit np.array(list(zip(a1, a2)))
1 loop, best of 3: 1.78 s per loop

In [150]: %timeit np.vstack((a1, a2)).T
100 loops, best of 3: 6.4 ms per loop

In [151]: %timeit np.column_stack([a1, a2])
100 loops, best of 3: 7.62 ms per loop

In [14]: %timeit np.array([a1, a2]).T
100 loops, best of 3: 6.36 ms per loop     # <--- WINNER!

关于python - 如何将 2 个一维数组转换为一个一维数组,但两个值都应位于一个元素内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40563628/

相关文章:

python - 根据另一个数组的值将 bool 矩阵的元素更改为 True

python - 如何从 HDFStore 中的框架中选择列

javascript - 与数组变量绑定(bind)时,IonSelect 和 ionCheckBox 不起作用

javascript - TypeScript - 根据属性值从数组中取出对象

python - 存在行间依赖时添加列的最快方法?

python - 通过多标签分类应用和绘制数据

python - 对于包的分支,什么是好的 pip/setuptools 兼容版本号?

python - (n,) 对于 numpy 数组形状意味着什么?

javascript - 检查元素是否在数组中

python - 如何使用 Plotly 制作简单的多级桑基图?