4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

numpy.apply_along_axisの挙動確認

Last updated at Posted at 2019-06-01

https://docs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html
のscipy公式ページを見ると関数を設定してそこに引数を設定できる。apply_along_axisの使い方の備忘録。

最近axisについて勉強する機会があったので動作確認。

>>> def my_func(a):
...     """Average first and last element of a 1-D array"""
...     return (a[0] + a[-1]) * 0.5
>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> np.apply_along_axis(my_func, 0, b)
array([ 4.,  5.,  6.])
>>> np.apply_along_axis(my_func, 1, b)
array([ 2.,  5.,  8.])

という関数をapply_along_axisに渡し挙動を見ている。

>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> np.apply_along_axis(my_func, 0, b)
array([ 4.,  5.,  6.])
>>> np.apply_along_axis(my_func, 1, b)
array([ 2.,  5.,  8.])

apply_along_axisのmy_func(a)は引数aのnp.array配列を代入し演算子結果を返す。
そこで重要なのがaxis。
axis=0だと引数にとる配列の一番外側を基準にするので
a[0]=[1, 2, 3]とa[-1]=[7, 8, 9]を足し0.5をかけているので

[[1 + 7]*0.5, [2 + 8]*0.5, [3 + 9]*0.5]
array([ 4.,  5.,  6.])

となる。

axis=1と置くと外側から二番目の配列にmy_funcを適応して計算する。
[1, 2, 3],[4, 5, 6],[7, 8, 9]のa[0]とa[-1]を足して配列に戻しているので

[[1 + 3]*0.5, [4 + 6]*0.5, [7 + 9]*0.5]
array([ 2.,  5.,  8.])

となる。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?