本問題では「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
解説
正解は選択肢②です。以下、解説します。
コードの確認
個々の選択肢を見る前に、まずコードを確認します。
まずnumpyをインポートします。
full関数で配列を作り、変数aに格納します。
linspace関数で配列を作り変数bに格納します。
hstack関数で変数aとbを連結させて変数cに格納します。
そしてprint関数で変数aのデータの中身と変数cのデータの中身を出力します。
次に配列abcをそれぞれ具体的に見ていきます。
配列a
full関数にタプルで1×5行列の指定と、np.e(NumPyの定数でネイピア数を表すもの)の指定をすることで、ネイピア数だけからなる1×5の2次元配列ができます。
これに対してT属性で転置がなされ、5×1の2次元配列になります。
さらにこれに対しravelメソッドが使われ1×5の1次元配列になります。
以上を変数aに格納します。
print関数で出力されるときには、aにインデックス-1が指定されているため、この配列の最後のネイピア数が出力されることになります。
配列b
linspace関数で、0から1までを等間隔に区切った5つの要素の配列を作り変数bに格納します。
配列c
配列aとbをhstack関数で連結し、変数cに格納します。
aとbはどちらも1次元配列なので、配列cは、aの後にそのままbが続く形の1次元配列です。
出力
print関数で出力します。
aにインデックス-1がされているので、先ほど確認した通りネイピア数が出力されます。
cにインデックス-1が指定されているので、1(右図の右端)が出力されます。
コードを実行してみると、右のとおり確認ができます。
選択肢①~⑤
以上から、この問題の正解は選択肢②となります。
第1回Python3データ分析模擬試験第17問の解説は以上です。