0

NumPyである種のスプライスを実行したいと思います。私が2つの配列を持っているとしましょう、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.]])

つまり、2番目の列を気にせずbに、の最初の列の値をに接続します。a

もちろん、これは自分で簡単に実装できますが、代わりにNumPyに実装してもらうとよいでしょう。それは可能ですか?

4

3 に答える 3

1

NumPyにはそれを行うための何かはないと思います。正確にその結果が必要ですか(順番に、値が定義されていない2番目の列)?たぶん、最終目標にまだ役立つであろう近い何かがあります。

于 2010-12-22T07:35:35.570 に答える
1

2つを積み重ねてから、並べ替えることができます。ただし、これは、インデックス1が2回出現するという事実を考慮していません。これが大幅な改善であるかどうかはわかりません...

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)
于 2010-12-23T16:13:15.883 に答える
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 に答える