Pythonで配列から要素を取り出す方法【スライス操作、numpy配列】

Python

基本

Aを配列とします.

A[a]でインデックスがaの要素を取り出す.
インデックスは 0から始まるので注意.

A=[1,2,3,4,5]
print(A[0]) #インデックス0は最初の要素を表す
print(A[3]) #インデックスが3の要素は4

#出力
# 1
# 4

負の数は後ろから何番目の要素かを表す.

A=[1,2,3,4,5]
print(A[-1])
print(A[-3])

#5
#3

Aがnumpy配列なら配列を引数に入れる事で要素を複数指定できる.(普通の配列だとエラーがでる)

import numpy as np
A=np.array([1,2,3,4,5,6,7])
print(A[[2,3,6]]) #インデックスが2,3,6の要素を取り出す
print(A[[6,3,1,2]]) #好きな順番で取り出せる

#[3 5 7]
#[7 4 2 3]

スライス

A[a:b] でインデックスが a から b-1 までの要素を取り出す.
このような操作をスライスという.
後ろの数は1つ手前のインデックスまでなので注意.
aを省略すると初めから, bを省略すると最後まで.

A=[1,2,3,4,5,6,7]
print(A[1:4])
print(A[2:])
print(A[:3]) #最初の3つを取り出す
print(A[:]) #両方省略すると全て

#[2, 3, 4]
#[3, 4, 5, 6, 7]
#[1, 2, 3]
#[1, 2, 3, 4, 5, 6, 7]

A[a:b:c]でステップ を指定できる. cずつ飛ばして取り出す

A=[1,2,3,4,5,6,7,8,9,10]
print(A[1:6:2])
print(A[::2]) 
print(A[5::-1]) #逆向きに取り出す

#[2, 4, 6]
#[1, 3, 5, 7, 9]
#[6, 5, 4, 3, 2, 1]

多次元配列へ応用

A=[[1,2,3,4],
   [5,6,7,8],
   [9,10,11,12]]
print(A[1]) #2行目を取り出す
print(A[2][1]) #3行2列成分を取り出す

#[5, 6, 7, 8]
#10

numpy配列なら A[a,b] などで多次元配列の要素を指定することもできる.
A[a,b]のような指定はnumpy配列でない通常の配列だとエラーが出る.

import numpy as np
A=np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
print(A[2,1]) #3行2列成分を取り出す
print(A[1,:]) #2行目を取り出す
print(A[:,2]) #3列目を取り出す. 取り出したあとは1次元配列になるので注意

#10
#[5 6 7 8]
#[ 3  7 11]
A=np.array([[1,2,3,4],
            [5,6,7,8],
            [9,10,11,12]])
print(A[1:,:]) #2行目以降を全て取り出す
print(A[:,:3]) #3列目までを全て取り出す
print(A[:2,:3])  #左上の2×3行列を取り出す

#[[ 5  6  7  8]
# [ 9 10 11 12]]
#[[ 1  2  3]
# [ 5  6  7]
# [ 9 10 11]]
#[[1 2 3]
# [5 6 7]]

コメント

タイトルとURLをコピーしました