用語比較
NumPyのaxis=0とaxis=1の違い|列ごとの集計と行ごとの集計(Python3データ分析試験)
違いは、計算する向きです。2次元配列でaxis=0は縦に集計して列ごとの結果を返し、axis=1は横に集計して行ごとの結果を返します。NumPy公式のクイックスタートの例では、sumのaxis=0が列ごと、minのaxis=1が行ごとの結果です。
Python3データ分析試験の公式の出題範囲には、NumPyの節(6問)があります。axisの出題の形式は受験前に公式の案内で確かめてください。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
axis=0とaxis=1の要点
axis=0
縦に集計し、列ごとに1つの結果を返す。3行4列のbでb.sum(axis=0)は、各列の合計 array([12, 15, 18, 21])。
axis=1
横に集計し、行ごとに1つの結果を返す。同じbでb.min(axis=1)は、各行の最小値 array([0, 4, 8])。
違いを表で確認
| 比較軸 | axis=0 | axis=1 |
|---|---|---|
| 集計される向き | 縦(行を順に重ねる向き)に集計する | 横(列を順に並べる向き)に集計する |
| 3行4列の配列での結果の形 | 列の数と同じ4個の値(列ごとの結果) | 行の数と同じ3個の値(行ごとの結果) |
| 公式の例(b = np.arange(12).reshape(3, 4)) | b.sum(axis=0) は array([12, 15, 18, 21])。各列の合計 | b.min(axis=1) は array([0, 4, 8])。各行の最小値 |
| 累積和(cumsum)での違い | 各列に沿って上から下へ足し上げる | b.cumsum(axis=1) は各行に沿って左から右へ足し上げ、形は3行4列のまま。1行目は [0, 1, 3, 6] |
| pandasでの対応 | df.mean() は列ごとの平均を計算する(既定の向き) | df.mean(axis=1) は行ごとの平均を計算する |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
axisの数字がどちらの向きか覚えられない人
「axis=0は列ごとの結果が出る」と、出力の形で覚えます。3行4列なら、axis=0は4個、axis=1は3個の値が返ります。
sumとcumsumでaxisの効き方が違うと感じる人
sumは向きに沿って1つにまとめるので次元が1つ減り、cumsumは足し上げながら進むので配列の形は変わりません。向きの考え方は同じです。
NumPyとpandasで向きが逆だと思っている人
どちらもaxis=0は列ごと、axis=1は行ごとの結果になります。pandasのdf.mean()は何も指定しなくても列ごとの平均です。
具体例で使い分ける
例 1
列ごとの合計を求める
b = np.arange(12).reshape(3, 4) の、各列の合計を知りたい場面です。
- bは [[0,1,2,3],[4,5,6,7],[8,9,10,11]] です。1列目は 0+4+8=12、2列目は 1+5+9=15 と、縦に足します。
- 結果は array([12, 15, 18, 21]) で、列の数と同じ4個です。これがb.sum(axis=0)です。
結論: 列ごとの結果がほしいときはaxis=0。要素が4個の配列が返れば、列ごとだと確かめられます。
例 2
行ごとの最小値と累積和を求める
同じbで、各行の最小値と、各行に沿った累積和を知りたい場面です。
- b.min(axis=1) は、各行の最小値 array([0, 4, 8]) を返します。要素は行の数と同じ3個です。
- b.cumsum(axis=1) は各行に沿って足し上げ、[[0,1,3,6],[4,9,15,22],[8,17,27,38]] を返します。1行目の末尾6は 0+1+2+3 です。
結論: 行ごとの結果、または行に沿った処理はaxis=1。cumsumは形が変わらない点も確かめます。
問題文から答えを選ぶ手順
- 1
配列の形を書き出す
3行4列なら(3, 4)と書き、行と列のどちらについて結果がほしいかを決めます。
- 2
返る値の個数から向きを決める
列ごとの結果なら列の数(4個)、行ごとの結果なら行の数(3個)が返る向きを選びます。
- 3
関数の種類を確かめる
sum・minのようにまとめる関数は次元が減り、cumsumのように足し上げる関数は形が変わりません。
試験での見分け方
- 1列ごとの合計・最小値などがほしいならaxis=0。
- 2行ごとの合計・最小値などがほしいならaxis=1。
- 33行4列で返る値が4個ならaxis=0、3個ならaxis=1。
- 4cumsumにaxisを付けても、配列の形は変わらない。
- 5pandasのdf.mean()は列ごと、df.mean(axis=1)は行ごと。
誤答しやすい選択肢
axis=0は行ごとの結果になると考える
修正: axis=0は列ごとの結果です。3行4列なら4個の値が返ることで確かめてください。
cumsum(axis=1)の結果を1行の配列だと思う
修正: cumsumは足し上げるだけで、形は3行4列のままです。公式の例でも3行の配列が返ります。
NumPyとpandasでaxisの意味が逆だと考える
修正: どちらもaxis=0は列ごと、axis=1は行ごとの結果です。pandasのdf.mean()は、axisを省くと列ごとの平均です。
確認問題
Q1b = np.arange(12).reshape(3, 4) のとき、b.sum(axis=0) は何を返すか?
答え: 各列の合計 array([12, 15, 18, 21])
axis=0は列ごとの結果を返します。1列目は 0+4+8=12 です。
Q2同じbで、b.min(axis=1) は何を返すか?
答え: 各行の最小値 array([0, 4, 8])
axis=1は行ごとの結果を返します。行は3つなので要素も3個です。
Q3pandasで、行ごとの平均を求める書き方は?
答え: df.mean(axis=1)
df.mean()は列ごとの平均で、axis=1を付けると行ごとの平均になります。
到達チェック
- axis=0が列ごと、axis=1が行ごとの結果になると説明できる
- 3行4列の配列で、返る値の個数から向きを判断できる
- cumsumが形を変えないことを説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- train_test_splitのrandom_stateを固定する場合と指定しない場合の違い(再現性)
train_test_splitのrandom_stateに整数を渡す場合と、指定しない場合の違いを、再現性・shuffleとの関係・公式例の出力で解説。Python3エンジニア認定データ分析試験の公式例にあるrandom_state=0の意味と確認問題つきです。
- plt.figure()とplt.subplots()の違い|Axesの有無(Python3データ分析)
plt.figure()はAxesのない空のFigure、plt.subplots()はAxes付きのFigureを作ります。plt.subplots(2, 2)の格子、subplot_mosaicとの違い、戻り値の受け取り方を、Matplotlib公式のQuick start guideで照合してまとめます。
- np.whereとnp.selectの違い|2択で値を選ぶか、複数の条件から選ぶか(Python3データ分析)
NumPyのnp.where(条件が真ならx、偽ならy)とnp.select(条件のリストと選択肢のリストから選ぶ)の違いを、条件の数、default、複数の条件が真のときの扱いで整理します。NumPy公式リファレンスの例で、np.selectの結果が0・-1・-2・42・16・25になる点つきです。
よくある質問
QNumPyのaxis=0とaxis=1の違いは何ですか?
計算する向きです。2次元配列でaxis=0は列ごとの結果、axis=1は行ごとの結果を返します。NumPy公式の例では、3行4列のb.sum(axis=0)がarray([12, 15, 18, 21])、b.min(axis=1)がarray([0, 4, 8])です。
Qaxisを指定しないとどうなりますか?
この記事は公式のクイックスタートの例だけを扱っています。axisを省いたときの挙動は、NumPyの各関数の公式文書で確認してください。
QpandasのaxisはNumPyと同じですか?
pandas公式の10分間ガイドでは、df.mean()が列ごとの平均、df.mean(axis=1)が行ごとの平均です。向きの考え方は同じです。
QPython3データ分析試験で問われますか?
公式の出題範囲にNumPyの節(6問)があります。axisを使った集計の出題の形式は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
