LoginSignup
1
1

More than 5 years have passed since last update.

python numpy アレイへ添え字アクセス

Posted at

numpyのアレイへ添え字アクセス

アレイ1要素の取り出し

>>> import numpy as np
>>> arr = np.arange(0,11)
>>> arr
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> arr[5]
5

アレイ1要素の取り出し

>>> import numpy as np
>>> arr = np.arange(0,11)
>>> arr
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>> arr[5]
5

アレイをスライスで取り出し

>>> arr[0:5]
array([0, 1, 2, 3, 4]) #5はふくまれない

スライス指定で代入

>>> arr[0:5]=100
array([100, 100, 100, 100, 100,   5,   6,   7,   8,   9,  10])

アレイコピーのつもりが、参照(スライス使わなくても同様)

>>> slice_of_arr = arr[0:5]
>>> slice_of_arr
array([100, 100, 100, 100, 100])
>>> slice_of_arr[:]=10
>>> slice_of_arr
array([10, 10, 10, 10, 10])
>>> arr
array([10, 10, 10, 10, 10,  5,  6,  7,  8,  9, 10]) #元のアレイまで変更

アレイコピー

>>> copy_arr = np.copy(arr[0:5])
>>> copy_arr
array([10, 10, 10, 10, 10])
>>> copy_arr[:] = 0
>>> arr
array([ 0, 10, 10, 10, 10,  5,  6,  7,  8,  9, 10]) #元のアレイ影響なし

2次元の添え字

>>> arr_2d = np.array(([0,1,2],[10,11,12],[20,21,22]))
>>> arr_2d 
array([[ 0,  1,  2],
       [10, 11, 12],
       [20, 21, 22]])
>>> arr_2d[0] #0行めを取り出す
array([0, 1, 2])

# 個別アクセス arr_2d[row][col] or arr_2d[row,col]
>>> arr_2d[1][0] 
10
>>> arr_2d[1,0]
10 

添え字活用応用例

>>> arr2d = np.zeros((10,10))
>>> arr2d
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
>>> arr_length = arr2d.shape[1] #アレイの長さ
>>> for i in range(arr_length): arr2d[i] = i
>>> arr2d
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.],
       [ 3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.,  3.],
       [ 4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.],
       [ 5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.,  5.],
       [ 6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.],
       [ 7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.],
       [ 8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.],
       [ 9.,  9.,  9.,  9.,  9.,  9.,  9.,  9.,  9.,  9.]])

>>> arr2d[[2,4,6,8]] #偶数行だけ取り出す
array([[ 2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.],
       [ 4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.],
       [ 6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.],
       [ 8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.,  8.]])
>>> arr2d[[6,4,2,7]] #順番を変えて取り出す
array([[ 6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.,  6.],
       [ 4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.,  4.],
       [ 2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.,  2.],
       [ 7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.,  7.]])
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1