使用2个一维数组创建二维数组

Am1*_*3zA 27 python arrays numpy

我使用了numpy和scipy,并且有一些函数非常关心数组的维度我有一个函数名称CovexHull(点)它接受点作为二维数组.

船体= ConvexHull(分)

In [1]: points.ndim
Out[1]: 2
In [2]: points.shape
Out[2]: (10, 2)
In [3]: points
Out[3]: 
array([[ 0. ,  0. ],
       [ 1. ,  0.8],
       [ 0.9,  0.8],
       [ 0.9,  0.7],
       [ 0.9,  0.6],
       [ 0.8,  0.5],
       [ 0.8,  0.5],
       [ 0.7,  0.5],
       [ 0.1,  0. ],
       [ 0. ,  0. ]])
Run Code Online (Sandbox Code Playgroud)

正如你在上面看到的那样,点数是ndim 2的numpy.

现在我有2个不同的numpy数组(tp和fp)就像这样(例如fp)

In [4]: fp.ndim
Out[4]: 1
In [5]: fp.shape
Out[5]: (10,)
In [6]: fp
Out[6]: 
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.4,
        0.5, 0.6,  0.9,  1. ])
Run Code Online (Sandbox Code Playgroud)

我的问题是如何有效地创建一个二维numpy数组,如tp和fp点

ijm*_*all 48

如果您希望将两个10元素的1-d阵列组合成2-d阵列,则np.vstack((tp, fp)).T可以执行此操作.np.vstack((tp, fp))将返回一个形状数组(2,10),该T属性返回具有形状(10,2)的转置数组(即两个1-d数组形成列而不是行).

>>> tp = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> tp.ndim
1
>>> tp.shape
(10,)

>>> fp = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> fp.ndim
1
>>> fp.shape
(10,)

>>> combined = np.vstack((tp, fp)).T
>>> combined
array([[ 0, 10],
       [ 1, 11],
       [ 2, 12],
       [ 3, 13],
       [ 4, 14],
       [ 5, 15],
       [ 6, 16],
       [ 7, 17],
       [ 8, 18],
       [ 9, 19]])

>>> combined.ndim
2
>>> combined.shape
(10, 2)
Run Code Online (Sandbox Code Playgroud)

  • +1,但您可以直接使用[`np.column_stack`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.column_stack.html)获得正确的形状. (12认同)
  • 这不应该是公认的答案。`column_stack` 更加简单(参见 Aminu 的回答) (2认同)

Kei*_*iku 9

另一种方法是使用np.transpose. 它似乎偶尔会使用,但不可读,因此最好使用Aminu Kano 的答案

import numpy as np

tp = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
fp = np.array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
combined = np.transpose((tp, fp))
combined
# Out[3]:
# array([[ 0, 10],
#        [ 1, 11],
#        [ 2, 12],
#        [ 3, 13],
#        [ 4, 14],
#        [ 5, 15],
#        [ 6, 16],
#        [ 7, 17],
#        [ 8, 18],
#        [ 9, 19]])
combined.ndim
# Out[4]: 2
combined.shape
# Out[5]: (10, 2)
Run Code Online (Sandbox Code Playgroud)

  • 我认为 /sf/answers/3903969611/ 中的“column_stack”比“vstack”更好,并且比“vstack”给出了错误的形状。 (2认同)

Ami*_*ano 5

您可以使用numpy的column_stack

np.column_stack((tp, fp))
Run Code Online (Sandbox Code Playgroud)