第1回Python3データ分析模擬試験【第18問】解説

第1回Python3データ分析模擬試験第18問

本問題では「NumPy」のうち「ユニバーサルファンクション、ブロードキャスト」について学びます。

本問題の解説はYouTube動画でもご覧いただけます。
【解説動画】 第1回Python3データ分析模擬試験 第18問
※当解説動画シリーズはPythonエンジニア育成推進協会に認定された「Python 3 エンジニア認定データ分析試験」の参考教材です。

問題

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.array([0, 9, 99, 999])
a = a + 1
a = a * 100
b = np.log10(a)
print(a[1], b[2])

① 1000 3.0
② 100 2.0
③ 1000 2.0
④ 100 4.0
⑤ 1000 4.0

解説

正解は選択肢⑤です。以下、解説します。

コードの確認

第1回_Python3データ分析模試_第18問コード

個々の選択肢を見る前に、まずコードを確認します。

まずnumpyをインポートします。

array関数で1次元配列を作り変数aに格納します。
変数aに1を足してaを上書きし、さらに100をかけて上書きします。
log10関数で、底を10とするaの対数の計算をして変数bに格納します。

最終的にprint関数で、変数aのデータの中身と変数bのデータの中身を出力します。

次に変数aとbを具体的に見ていきます。

変数a

第1回_Python3データ分析模試_第18問aの各要素に1を足す

array関数で1次元配列を作り、aの配列内のすべての要素に対して1を足します(右はイメージ)。

第1回_Python3データ分析模試_第18問aの各要素に100をかける

さらにこの配列の各要素に100をかけます。

なお、このように配列の内部データに直接演算を行うNumPyの機能をブロードキャストといいます。

print関数で出力されるa[1]の値

print関数で出力されるa[1]の値は、右の通り(「1000」)です。

変数b

先ほどのaの配列の値を用いて、log10関数で底を10とする配列aの各要素の対数を求めます。

なお、このように、NumPy配列の要素内のデータを一括変換する関数を、ユニバーサルファンクションといいます。

print関数で出力されるb[2]の値は、右の通り(「4」)です。

第1回_Python3データ分析模試_第18問実行結果

コードを実行してみると、右のとおり確認ができます。

選択肢①~⑤

以上から、この問題の正解は選択肢⑤となります。

第1回Python3データ分析模擬試験第18問の解説は以上です。