科学の箱

科学・IT・登山の話題

Python

スライスとインデックスを組み合わせてデータを抜き出す

投稿日:

行列からデータを取得する際には、インデックスを利用すことはわかった。このインデックスの種類としては整数、スライス、配列、ブーリアンがある。これらを組み合わせて柔軟に配列から要素を抜き出すことができる。

今回はYamada, Takahashi, Suzuki, Kawakamiに紐づくデータを用意する。各データは7項目から成り立つ。また一人には複数のデータが紐づいているとする。

まずは名前用の配列を用意する。

# ラベル用配列
name = np.array(["Yamada", "Takahashi", "Suzuki", "Kawakami","Yamada"])
print(name)
# ['Yamada' 'Takahashi' 'Suzuki' 'Kawakami' 'Yamada']

次にデータ用の配列を用意する。データ数は5であり、7項目ある。合計25個のデータを用意して、shapeで5×7にしてあげる。

data = np.random.random(35)
data = data.reshape(5,7)
print(data)
# [[0.34424184 0.62308632 0.77090286 0.11197278 0.56711419 0.82823042
  0.40272551]
 [0.97235281 0.15912985 0.52458126 0.39268775 0.58444596 0.28289483
  0.88226724]
 [0.4269921  0.70174719 0.35377691 0.74882525 0.35059669 0.10852082
  0.79938528]
 [0.78825568 0.23561709 0.85584193 0.50858051 0.93876539 0.55676888
  0.46110362]
 [0.30714079 0.72800077 0.74949162 0.06922578 0.89872415 0.69173606
  0.93505941]]

 

さていまYamadaの3~5番目のデータのみを抜き出すとする。

単純に考えると、まずYamadaのデータのみ抜き出す。そしてスライスをすればよい。

# Yamadaを抜き出すためのブーリアン型
b_name = name == "Yamada" 
print(b_name)
# [ True False False False  True]

print(data[b_name])
# array([[0.34424184, 0.62308632, 0.77090286, 0.11197278, 0.56711419,
        0.82823042, 0.40272551],
       [0.30714079, 0.72800077, 0.74949162, 0.06922578, 0.89872415,
        0.69173606, 0.93505941]])

data_x = data[b_name]
print(data_x[:,3:5])
# array([[0.11197278, 0.56711419],
       [0.06922578, 0.89872415]])

 

さてこの操作はブーリアン型とスライスを合わせることで、一つにまとめることができる。

print(data[b_name, 3:5])
# [[0.11197278 0.56711419]
 [0.06922578 0.89872415]]

 

さらにブーリアン配列もinlineにすると以下のようになる。

print(data[name=="Yamada", 3:5])
# [[0.11197278 0.56711419]
 [0.06922578 0.89872415]]

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

python data scientist bootcamp

pythonでdata分析をしたいと思ったが学校に通う時間もお金もない。udemyで検索したところ英語版であるが1400円!でコースが見つかったのでこちらを受けることにした。 https://www. …

no image

kaggle Titanic Tutorial – 9

さて今回は少し趣向を変えて別のアルゴリズムを試してみる。 アルゴリズムの試し方はこちらを参考にした。 https://www.kaggle.com/omarelgabry/a-journey-thro …

no image

seleniumでWebElement object is not iterableが出るときの対処方法

iterableなオブジェクトを想定して要素を取得、forループに取り込むと下記のようなWebElement object is not iterableが出る。 結論としては勘違い。 Seleniu …

no image

numpy.linspace()を使って等差数列を生成する

一次関数と等差数列 一次関数をテストするときに必須になるのが等差数列。等差数列とは要素と要素の間の差が等しいもの。 例えば1, 2, 3, 4, 5, 6は等差が1の数列である。等差が2になると、1, …

no image

requests.exceptions.SSLError: HTTPSConnectionPoolの対応方法

エラー raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host=&#8217 …

2019年9月
« 8月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



最近の投稿

アーカイブ

カテゴリー