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

本問題では「NumPy」のうち「full関数、linspace関数、hstack関数による配列処理」について学びます。

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

問題

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

import numpy as np
a = np.full((1, 5), np.e).T.ravel()
b = np.linspace(0, 1, 5)
c = np.hstack([a, b])
print(a[-1], c[-1])

① 2.718281828459045 5.0

② 2.718281828459045 1.0

③ 3.141592653589793 1.0

④ 3.141592653589793 5.0

⑤ 3.141592653589793 0.0

解説

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

コードの確認

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

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

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

full関数で配列を作り、変数aに格納します。
linspace関数で配列を作り変数bに格納します。
hstack関数で変数aとbを連結させて変数cに格納します。

そしてprint関数で変数aのデータの中身と変数cのデータの中身を出力します。

次に配列abcをそれぞれ具体的に見ていきます。

配列a

第1回_Python3データ分析模試_第17問配列a

full関数にタプルで1×5行列の指定と、np.e(NumPyの定数でネイピア数を表すもの)の指定をすることで、ネイピア数だけからなる1×5の2次元配列ができます。

これに対してT属性で転置がなされ、5×1の2次元配列になります。

さらにこれに対しravelメソッドが使われ1×5の1次元配列になります。

以上を変数aに格納します。

第1回_Python3データ分析模試_第17問配列aのインデックス指定

print関数で出力されるときには、aにインデックス-1が指定されているため、この配列の最後のネイピア数が出力されることになります。

配列b

第1回_Python3データ分析模試_第17問b

linspace関数で、0から1までを等間隔に区切った5つの要素の配列を作り変数bに格納します。

配列c

第1回_Python3データ分析模試_第17問配列c

配列aとbをhstack関数で連結し、変数cに格納します。

第1回_Python3データ分析模試_第17問配列cの値

aとbはどちらも1次元配列なので、配列cは、aの後にそのままbが続く形の1次元配列です。

出力

第1回_Python3データ分析模試_第17問print関数によるa[-1]とc[-1]の出力

print関数で出力します。

第1回_Python3データ分析模試_第17問配列aのインデックス-1

aにインデックス-1がされているので、先ほど確認した通りネイピア数が出力されます。

第1回_Python3データ分析模試_第17問cのインデックス1

cにインデックス-1が指定されているので、1(右図の右端)が出力されます。

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

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

選択肢①~⑤

第1回_Python3データ分析模試_第17問選択肢①~⑤

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

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