本問題の解説は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
解説
正解は選択肢⑤です。以下、解説します。
コードの確認

個々の選択肢を見る前に、まずコードを確認します。
まずnumpyをインポートします。
array関数で1次元配列を作り変数aに格納します。
変数aに1を足してaを上書きし、さらに100をかけて上書きします。
log10関数で、底を10とするaの対数の計算をして変数bに格納します。
最終的にprint関数で、変数aのデータの中身と変数bのデータの中身を出力します。
次に変数aとbを具体的に見ていきます。
変数a

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

さらにこの配列の各要素に100をかけます。
なお、このように配列の内部データに直接演算を行うNumPyの機能をブロードキャストといいます。
![print関数で出力されるa[1]の値](https://study.prime-strategy.co.jp/wp-content/uploads/2021/01/第1回_Python3データ分析模試_第18問a_3-1024x236.png)
print関数で出力されるa[1]の値は、右の通り(「1000」)です。
変数b

先ほどのaの配列の値を用いて、log10関数で底を10とする配列aの各要素の対数を求めます。
なお、このように、NumPy配列の要素内のデータを一括変換する関数を、ユニバーサルファンクションといいます。
print関数で出力されるb[2]の値は、右の通り(「4」)です。

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

以上から、この問題の正解は選択肢⑤となります。
第1回Python3データ分析模擬試験第18問の解説は以上です。