0

我想在NumPy中执行各种拼接。假设我有两个数组,a并且b

>>> a
array([[ 1, 10],
       [ 2, 20],
       [ 5, 30]])
>>> b
array([[ 1, 11],
       [ 3, 31],
       [ 4, 41]])

我想将其拼接到以下数组中c

>>> c
array([[  1.,  10.],
       [  2.,  20.],
       [  3.,  nan],
       [  4.,  nan],
       [  5.,  30.]])

也就是说,我将第一列中的值拼接ba,而不用担心第二列。

我当然可以很容易地自己实现这个,但是让 NumPy 代替我做会更好。那可能吗?

4

3 回答 3

1

您可以将两者堆叠在一起然后排序。但是,这并没有考虑到您有两次出现索引 1 的事实。不确定这是一个很大的改进......

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)
于 2010-12-23T16:13:15.883 回答
1

我认为NumPy中没有任何东西可以做到这一点。您是否需要该结果(按顺序,第二列具有未定义的值)?也许有一些接近的东西对最终目标仍然有用。

于 2010-12-22T07:35:35.570 回答
1

mishaF 的答案只是缺少最后一步——使最后一列的条目唯一。获取您的完整代码c(除了 dtype,它在您的帖子中从 更改为intfloat

b[:,1]=numpy.nan
c = numpy.r_[a, b]
c.sort(0)
c = c[numpy.unique(c[:,0], True)[1]]
于 2010-12-23T23:33:31.957 回答