本問題では「NumPy」のうち「array関数によるndarrayオブジェクトの生成」について学びます。
本問題の解説はYouTube動画でもご覧いただけます。
【解説動画】 第1回Python3データ分析模擬試験 第15問
※当解説動画シリーズはPythonエンジニア育成推進協会に認定された「Python 3 エンジニア認定データ分析試験」の参考教材です。
問題
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2, 3])
print(a[-1:, [1, 2]], b.dtype)
① [[1 2], [4 5]] float16
② [[1 2], [4 5]] int16
③ [[1 2], [4 5]] int64
④ [[5 6]] int64
⑤ [[5 6]] int16
解説
正解は選択肢④です。以下、解説します。
コードの確認
個々の選択肢を見る前に、まずコードを確認します。
まずnumpyをインポートして、asキーワードでnumpyをnpで呼び出せるようにします。
array関数にリストを渡して、2次元配列のndarrayオブジェクトを作り、変数aに格納します。
同様に一次元配列のndarrayオブジェクトを作り、変数bに格納します。
そしてprint関数で出力します。
コードを実行すると、右図のようになります(この結果はLinux環境での実行結果です)。
出力の1つ目が変数aのデータの中身、もう一つがbのデータ型です。
また出力結果のうち、a[-1:, [1, 2]]に関する部分を確認します。
a[-1:, [1, 2]] の部分は、(2次元配列の)行が、負のインデックス値で指定されています。
ですから右のように、-1からそれ以降、つまり4,5,6の部分(青)がそれに該当します。
列についてはインデックス値1と2(赤)で指定されています。
これら(青と赤)の交わった5と6がprint関数で出力されています。
なお、このコードをWindows環境で実行すると、変数aのデータについてはLinux環境などの場合と同じですが、変数bのデータについてはint32、32ビットの整数と出力されます。
これは64ビットバージョンのWindowsでもそのようになります。この現象は、どうやらWindowsだけに見られるもので、64ビットバージョンのwindowsのシステム設計によるものであるようです。
選択肢①~⑤
以上から、この問題の正解は、aの出力が5と6、bの出力がint64または32になるものとなります。
第1回Python3データ分析模擬試験第15問の解説は以上です。