NumPy配列の結合と分割


このページは以下のURLに移転しました。5秒後に自動で移動します。
新URL: https://note.nkmk.me/python-numpy-join-split/

結合

vstack, r_concatenate(axis=0)と、hstack, c_concatenate(axis=1)と同等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import numpy as np
arr1 = np.arange(6).reshape(2, 3)
arr2 = np.arange(6, 12).reshape(2, 3)
print arr1
# [[0 1 2]
# [3 4 5]]
print arr2
# [[ 6 7 8]
# [ 9 10 11]]
arr_v = np.concatenate((arr1, arr2), axis=0)
arr_v = np.vstack((arr1, arr2))
arr_v = np.r_[arr1, arr2]
print arr_v
# [[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]]
arr_h = np.concatenate((arr1, arr2), axis=1)
arr_h = np.hstack((arr1, arr2))
arr_h = np.c_[arr1, arr2]
print arr_h
# [[ 0 1 2 6 7 8]
# [ 3 4 5 9 10 11]]

分割

2つ目の引数(indices_or_sections)が、

  • 整数値N : N等分に分割(割り切れない場合はエラー)
  • 配列 : 各値の位置で分割

vsplitsplit(axis=0)と、hsplitsplit(axis=1)と同等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import numpy as np
arr = np.arange(12).reshape(3, 4)
print arr
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
a, b = np.split(arr, 2, axis=1)
a, b = np.hsplit(arr, 2)
print a
# [[0 1]
# [4 5]
# [8 9]]
print b
# [[ 2 3]
# [ 6 7]
# [10 11]]
a, b, c = np.split(arr, [1, 3], axis=1)
a, b, c = np.hsplit(arr, [1, 3])
print a
# [[0]
# [4]
# [8]]
print b
# [[ 1 2]
# [ 5 6]
# [ 9 10]]
print c
# [[ 3]
# [ 7]
# [11]]
a, b = np.split(arr, [1], axis=0)
a, b = np.vsplit(arr, [1])
print a
# [[0 1 2 3]]
print b
# [[ 4 5 6 7]
# [ 8 9 10 11]]

関連記事