Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

NumPyの使い方(14) 繰り返し

NumPyの繰り返しrepeat()、tile()について。
 

np.repeat()

 配列の要素を繰り返す。
 axisを省略すると1次元にflattenされる。

import numpy as np

a1 = np.arange(4)
print(a1.repeat(2))
#  [0 0 1 1 2 2 3 3]

print(a1.repeat([3, 2, 1, 0]))
# [0 0 0 1 1 2]

a2 = np.arange(6).reshape(2, 3)
print(a2.repeat(2, axis=0))
# [[0 1 2]
#  [0 1 2]
#  [3 4 5]
#  [3 4 5]]

print(a2.repeat(2, axis=1))
# [[0 0 1 1 2 2]
#  [3 3 4 4 5 5]]

print(a2.repeat([1, 2, 3], axis=1))
# [[0 1 1 2 2 2]
#  [3 4 4 5 5 5]]

# axisを省略すると1次元化
print(a2.repeat(2))
# [0 0 1 ..., 4 5 5]

print(np.repeat(a2, 2)) # 関数でも表現できる
# [0 0 1 ..., 4 5 5]

 

np.tile()

タイル状に敷き詰める。

a1 = np.arange(4)
print(np.tile(a1, 2))
# [0 1 2 3 0 1 2 3]

print(np.tile(a1, (2, 3)))
# [0 1 2 3 0 1 2 3]
# [[0 1 2 ..., 1 2 3]
#  [0 1 2 ..., 1 2 3]]

print(np.tile(a1, (1, 2, 3)))
# [[[0 1 2 ..., 1 2 3]
#   [0 1 2 ..., 1 2 3]]]

a2 = np.arange(6).reshape(2, 3)
print(np.tile(a2, 2))
# [[0 1 2 0 1 2]
#  [3 4 5 3 4 5]]

print(np.tile(a2, (3, 2)))
# [[0 1 2 0 1 2]
#  [3 4 5 3 4 5]
#  [0 1 2 0 1 2]
#  [3 4 5 3 4 5]
#  [0 1 2 0 1 2]
#  [3 4 5 3 4 5]]