1. ホーム
  2. python

[解決済み] NumPyの配列を列ごとに解凍する

2022-02-07 13:40:37

質問

NumPy の配列、例えば 5x3 があったとして、それを列ごとに一度に解凍して関数に渡す方法はあるのだろうか。 my_func(arr[:, 0], arr[:, 1], arr[:, 2]) ?

のようなものです。 *args を使用すると、リスト解凍が列単位で行えます。

解決方法は?

関数の引数に列を使用するために、配列の転置を解凍することができます。

my_func(*arr.T)

ここで簡単な例を挙げてみましょう。

>>> x = np.arange(15).reshape(5, 3)
array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])

列を足し合わせる関数を書いてみましょう(通常は x.sum(axis=1) NumPyの場合)。

def add_cols(a, b, c):
    return a+b+c

では、私たちは

>>> add_cols(*x.T)
array([15, 18, 21, 24, 27])

NumPyの配列は、1次元に沿って展開されます。したがって、配列を転置する必要があります。