numpy で2つの時間のインデックスをarrayデータとして持っていて、x にはない時間のインデックスがyにはあって、xにはないのでyから取り除きたいときにどうすればよいかすぐにはわからなかったため、備忘録を残しておきます。
In [2]: import numpy as np
In [3]: s = np.arange(120)
In [4]: t = np.arange(10, 120)
In [8]: np.in1d(t, s)
Out[8]:
array([ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True])
In [9]: np.in1d(s, t)
Out[9]:
array([False, False, False, False, False, False, False, False, False,
False, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True])
あとはnp.in1dの戻り値を s[return_value]
みたいな感じで取り出してやればOK。これで、sに存在するインデックスだけの抽出ができました。pandas使ってると困らないんですが、numpyだけだと調べにくいですね。
コメント