Python3エンジニア認定データ分析試験 ③ NumPy

多次元配列ndarrayの生成と操作を扱う。array/arange/linspace/zeros/ones、reshapeとresizeの違い、スライスとインデックス参照、ブールインデックスとファンシーインデックス、連結(concatenate・vstack・hstack)と分割、転置、次元追加。さらにブロードキャストの規則、ユニバーサル関数、sum/mean/max/argmaxなどの集約とaxis指定、乱数、内積と行列積まで。公式の出題範囲では6問・15%。つまずきどころは、スライスがコピーではなく参照であること、axis=0と1の方向の取り違え、ブロードキャストが成立する形状の条件。

この分野の問題43問を、選択肢・正解・解説つきで掲載しています。まず自分で解答を考えてから「正解と解説を見る」を開いて答え合わせをしてください。

クイズモードで挑戦 →

68NumPyには配列用の型であるndarrayと、もう一つ行列用の型があります。それは何ですか?

  1. Avector
  2. Blist
  3. Ctuple
  4. Dmatrix
正解と解説を見る

正解:Dmatrix

NumPyにはndarrayと、行列用の型であるmatrixがあります。

この問題の解説ページを開く →

69NumPyを利用する際、慣例としてどのようにインポートしますか?

  1. Aimport np from numpy
  2. Bimport numpy as num
  3. Cimport numpy as np
  4. Dimport numpy
正解と解説を見る

正解:Cimport numpy as np

「import numpy as np」としてnpで呼び出せるようにするのが一般的です。

この問題の解説ページを開く →

701次元配列 a = np.array([1, 2, 3]) において、a.shape の出力結果として正しいものはどれですか?

  1. A(1, 3)
  2. B[3]
  3. C3
  4. D(3,)
正解と解説を見る

正解:D(3,)

1次元配列で3要素あるため、(3,)というタプルが出力されます。

この問題の解説ページを開く →

712次元配列 b = np.array([[1, 2, 3], [4, 5, 6]]) において、b.shape の出力結果として正しいものはどれですか?

  1. A(2, 3)
  2. B(6,)
  3. C2
  4. D(3, 2)
正解と解説を見る

正解:A(2, 3)

2行3列のデータとなるため、(2, 3)が出力されます。

この問題の解説ページを開く →

72reshapeメソッドを実行する際、変換前と変換後で要素数が合わない場合に送出されるエラーはどれですか?

  1. ATypeError
  2. BIndexError
  3. CValueError
  4. DMemoryError
正解と解説を見る

正解:CValueError

要素数が合わない場合はValueErrorが送出されます。

この問題の解説ページを開く →

73多次元配列を1次元配列に変換するメソッドのうち、参照を返すものはどれですか?

  1. Aravel()
  2. Breshape()
  3. Cconvert()
  4. Dflatten()
正解と解説を見る

正解:Aravel()

ravelメソッドは参照を返すのに対し、flattenメソッドはコピーを返します。

この問題の解説ページを開く →

74多次元配列を1次元配列に変換するメソッドのうち、コピーを返すものはどれですか?

  1. Areshape()
  2. Bflatten()
  3. Cview()
  4. Dravel()
正解と解説を見る

正解:Bflatten()

flattenメソッドは深いコピーを返します。

この問題の解説ページを開く →

75スライス機能を使用した際の結果の扱いについて、Python標準のリストとNumPy配列の違いとして正しいものはどれですか?

  1. Aリストはコピーが渡されるがNumPy配列は参照が渡される
  2. Bリストは参照が渡されるがNumPy配列はコピーが渡される
  3. Cどちらも参照が渡される
  4. Dどちらもコピーが渡される
正解と解説を見る

正解:Aリストはコピーが渡されるがNumPy配列は参照が渡される

NumPyではスライスの結果は参照が渡されるため、元データの変更に注意が必要です。

この問題の解説ページを開く →

76NumPy配列の要素のデータ型を確認するために使用する属性はどれですか?

  1. Ashape
  2. Bclass
  3. Cdtype
  4. Dtype
正解と解説を見る

正解:Cdtype

dtype属性を使って要素のデータ型を確認できます。

この問題の解説ページを開く →

77NumPy配列のデータ型を別の型(例:浮動小数点数)に変換するために使用するメソッドはどれですか?

  1. Acast()
  2. Bastype()
  3. Cconvert()
  4. Dchange()
正解と解説を見る

正解:Bastype()

astypeメソッドを使ってnp.float16などに変換します。

この問題の解説ページを開く →

782次元配列 b = np.array([[1, 2, 3], [4, 5, 6]]) に対して、b[1, 0] とスライスを指定した場合に取得できる値はどれですか?

  1. A2
  2. B3
  3. C4
  4. D6
正解と解説を見る

正解:C4

行インデックス1(2行目)、列インデックス0(1列目)の値である4が取得できます。

この問題の解説ページを開く →

792次元配列 b = np.array([[1, 2, 3], [4, 5, 6]]) に対して、b[:, 2] とスライスを指定した場合の出力結果はどれですか?

  1. Aarray([3, 6])
  2. Barray([2, 5])
  3. Carray([1, 4])
  4. Darray([4, 5, 6])
正解と解説を見る

正解:Aarray([3, 6])

行方向はすべて(:)、列方向はインデックス2(3列目)を指定しているため、3と6が取得されます。

この問題の解説ページを開く →

80NumPy配列の「深いコピー(Deep Copy)」を作成するために使用するメソッドはどれですか?

  1. Acopy()
  2. Bclone()
  3. Cdeep()
  4. Dduplicate()
正解と解説を見る

正解:Acopy()

copyメソッドを使ってデータを深いコピーすることができます。

この問題の解説ページを開く →

81np.arange(1, 11, 2) を実行したときの出力として正しいものはどれですか?

  1. Aarray([2, 4, 6, 8, 10])
  2. Barray([1, 3, 5, 7, 9, 11])
  3. Carray([1, 2, 3, 4, 5])
  4. Darray([1, 3, 5, 7, 9])
正解と解説を見る

正解:Darray([1, 3, 5, 7, 9])

1から始まり、11の手前まで2つ飛ばしで生成されるため、1, 3, 5, 7, 9となります。

この問題の解説ページを開く →

82乱数生成において、毎回同じ結果が出力されるようにシード値を固定する関数はどれですか?

  1. Anp.random.seed()
  2. Bnp.random.fix()
  3. Cnp.random.state()
  4. Dnp.random.set()
正解と解説を見る

正解:Anp.random.seed()

np.random.seed()でシード値を固定することで、結果を固定できます。

この問題の解説ページを開く →

83np.random.random((3, 2)) が生成する乱数の値の範囲として正しいものはどれですか?

  1. A0以上、10未満
  2. B1以上、10未満
  3. C-1以上、1未満
  4. D0以上、1未満
正解と解説を見る

正解:D0以上、1未満

0以上、1未満の範囲の乱数を生成します。

この問題の解説ページを開く →

840以上1未満の乱数を生成する np.random.random と np.random.rand の違いとして正しいものはどれですか?

  1. Arandomは正規分布に従い、randは一様分布に従う
  2. Brandomは整数を返し、randは小数を返す
  3. Crandomは複数の引数で形状を渡すが、randは行と列のタプルを渡す
  4. Drandomは行と列のタプルを渡すが、randは複数の引数で形状を渡す
正解と解説を見る

正解:Drandomは行と列のタプルを渡すが、randは複数の引数で形状を渡す

random関数はタプルで形状を渡し、rand関数は引数を並べて形状を渡します。

この問題の解説ページを開く →

85np.random.randint(1, 10) が生成する整数の範囲として正しいものはどれですか?

  1. A1以上10未満
  2. B1以上10以下
  3. C0以上10未満
  4. D0以上10以下
正解と解説を見る

正解:A1以上10未満

第一引数以上かつ第二引数未満のランダムな整数を生成します。

この問題の解説ページを開く →

86np.random.randn関数が出力する乱数はどのような分布に従いますか?

  1. A平均0・分散1の標準正規分布
  2. B二項分布
  3. C一様分布
  4. Dポアソン分布
正解と解説を見る

正解:A平均0・分散1の標準正規分布

標準正規分布に従い、平均0、分散1の分布で出力されます。

この問題の解説ページを開く →

87np.zeros(3) を実行したときに取得できる配列の要素のデータ型として正しいものはどれですか?

  1. A文字列型
  2. B整数型(int)
  3. C浮動小数点数型(float)
  4. D真偽値型(bool)
正解と解説を見る

正解:C浮動小数点数型(float)

要素数の0.0が入った配列となるため、浮動小数点数になります。

この問題の解説ページを開く →

88np.eye(3) を実行して作成される配列はどのようなものですか?

  1. A要素がすべて3の1次元配列
  2. B3x3のゼロ行列
  3. C3つの要素を持つ乱数配列
  4. D3x3の単位行列
正解と解説を見る

正解:D3x3の単位行列

eye関数は指定する対角要素を持った単位行列を作ります。

この問題の解説ページを開く →

89指定の値で配列を作る np.full(3, 3.14) の実行結果として正しいものはどれですか?

  1. Aarray([3, 14, 3])
  2. Barray([3.14, 3.14, 3.14])
  3. Carray([[3.14, 3.14, 3.14]])
  4. Darray([3, 3, 3])
正解と解説を見る

正解:Barray([3.14, 3.14, 3.14])

3.14という数値を3つの要素の配列に入れます。

この問題の解説ページを開く →

90NumPyで欠損値などを表す np.nan のデータ型(type)は何に分類されますか?

  1. ANoneType
  2. Bfloat
  3. Cint
  4. Dstr
正解と解説を見る

正解:Bfloat

nanは数値ではないことを宣言していますが、データ型としてはfloatに分類されます。

この問題の解説ページを開く →

91np.linspace(0, 1, 5) の実行結果として正しいものはどれですか?

  1. Aarray([0., 0.2, 0.4, 0.6, 0.8])
  2. Barray([1, 2, 3, 4, 5])
  3. Carray([0, 1, 2, 3, 4])
  4. Darray([0. , 0.25, 0.5 , 0.75, 1. ])
正解と解説を見る

正解:Darray([0. , 0.25, 0.5 , 0.75, 1. ])

0から1までを等間隔に区切った5つの要素の配列を作ります。

この問題の解説ページを開く →

92配列内の要素間の前後の差分を計算して出力する関数はどれですか?

  1. Anp.minus()
  2. Bnp.diff()
  3. Cnp.sub()
  4. Dnp.gradient()
正解と解説を見る

正解:Bnp.diff()

np.diffは、要素間の差分を返します。

この問題の解説ページを開く →

93concatenate関数を使って2次元配列を列方向(横方向)に連結させたい場合、どのような引数を指定しますか?

  1. Aaxis=0
  2. Baxis=-1
  3. Caxis=1
  4. Daxis=2
正解と解説を見る

正解:Caxis=1

カラム(列方向)を増やす場合はaxis=1と指定します。

この問題の解説ページを開く →

94np.vstack関数の役割として正しいものはどれですか?

  1. A配列を複数の列に分割する
  2. B配列の行と列を入れ替える
  3. C行を増やす方向に配列を連結する
  4. D列を増やす方向に配列を連結する
正解と解説を見る

正解:C行を増やす方向に配列を連結する

vstack関数を使って行を増やす(垂直)方向に連結を行います。

この問題の解説ページを開く →

95列の途中で配列を分割し、複数の配列に分けるための関数はどれですか?

  1. Anp.divide()
  2. Bnp.hsplit()
  3. Cnp.vsplit()
  4. Dnp.split_col()
正解と解説を見る

正解:Bnp.hsplit()

hsplit関数を使って列の途中で分割し配列を作ります。

この問題の解説ページを開く →

962次元配列 b の行と列を入れ替える「転置」を行うための記述はどれですか?

  1. Anp.inv(b)
  2. BT
  3. CR
  4. Dtranspose
正解と解説を見る

正解:BT

転置には .T を使います。

この問題の解説ページを開く →

97スライシングを利用して、配列の要素数を指定せずに次元を1つ追加するために使用する定数はどれですか?

  1. Anp.addaxis
  2. Bnp.newdim
  3. Cnp.newaxis
  4. Dnp.expand
正解と解説を見る

正解:Cnp.newaxis

np.newaxisを使って次元を追加できます。要素数を指定する必要がないため便利です。

この問題の解説ページを開く →

98x座標とy座標の配列から、組み合わせてできるすべての点のグリッド座標データを生成する関数はどれですか?

  1. Anp.matrix()
  2. Bnp.meshgrid()
  3. Cnp.griddata()
  4. Dnp.mgrid()
正解と解説を見る

正解:Bnp.meshgrid()

等高線やヒートマップを描くときに使用するmeshgrid関数です。

この問題の解説ページを開く →

99配列内の各要素の絶対値を一括で計算して返すユニバーサルファンクションはどれですか?

  1. Anp.val()
  2. Bnp.abs()
  3. Cnp.positive()
  4. Dnp.sign()
正解と解説を見る

正解:Bnp.abs()

np.abs関数を実行することで内部要素の絶対値の計算結果を取得できます。

この問題の解説ページを開く →

100np.log()関数で0の対数を計算しようとした際に出力される、マイナス無限大を意味する値はどれですか?

  1. ANone
  2. B-inf
  3. C0
  4. D-nan
正解と解説を見る

正解:B-inf

log(x)はx>0の時のみ定義されているため、マイナス無限大を意味する-infが出力されます。

この問題の解説ページを開く →

1011次元配列 a = np.array([0, 1, 2]) に対して a + 10 を実行した結果はどうなりますか?

  1. A要素すべてに10が加算され array([10, 11, 12]) となる
  2. Bエラーが発生する
  3. C最初の要素のみ10が加算される
  4. D配列の末尾に10が追加される
正解と解説を見る

正解:A要素すべてに10が加算され array([10, 11, 12]) となる

ブロードキャストにより、スカラーの10が配列の各要素に足し算されます。

この問題の解説ページを開く →

102次元や形状が違う配列同士でも、NumPyが自動で形状を拡張して演算を行う仕組みを何と呼びますか?

  1. Aキャスティング
  2. Bマッピング
  3. Cブロードキャスト
  4. Dユニバーサル展開
正解と解説を見る

正解:Cブロードキャスト

次元が違うデータでも演算が行えるのがブロードキャストです。

この問題の解説ページを開く →

103同じ形状の配列aとbに対して a * b と記述した場合、どのような計算が行われますか?

  1. A行列のドット積が計算される
  2. B同じ位置(インデックス)の要素同士が掛け算される
  3. C要素の合計値同士が掛け合わされる
  4. Dエラーとなる
正解と解説を見る

正解:B同じ位置(インデックス)の要素同士が掛け算される

足し算などと同様に、同じ形状であれば同じ位置の要素同士で掛け算が行われます。

この問題の解説ページを開く →

104NumPy配列の割り算において、0で割る要素が存在する場合の実行結果はどうなりますか?

  1. A例外エラー(ZeroDivisionError)となり停止する
  2. B0で割った要素は0として出力される
  3. C計算が強制終了しプログラムが落ちる
  4. D無限大を表す inf が出力され、RuntimeWarning が出る
正解と解説を見る

正解:D無限大を表す inf が出力され、RuntimeWarning が出る

無限大を表すinfが要素に含まれ、RuntimeWarningも出力されます。

この問題の解説ページを開く →

105配列のドット積を求めるために、Python 3.5以降で利用可能になった演算子はどれですか?

  1. A&
  2. B$
  3. C%
  4. D@
正解と解説を見る

正解:D@

dot関数の代わりに @ 演算子を利用してドット積を求めることができます。

この問題の解説ページを開く →

1062行3列の行列と、3行2列の行列のドット積を計算した場合、出力される配列の形状はどうなりますか?

  1. A2行3列の行列
  2. B6要素の1次元配列
  3. C2行2列の行列
  4. D3行3列の行列
正解と解説を見る

正解:C2行2列の行列

2x3行列と3x2行列のドット積を求めているため、2x2行列が出力されます。

この問題の解説ページを開く →

107NumPy配列 b に対して b > 0 と比較演算を行った際、返される配列の要素のデータ型はどれですか?

  1. A真偽値 (True/False)
  2. B整数型 (0/1)
  3. C文字列型 ('True'/'False')
  4. D浮動小数点数型
正解と解説を見る

正解:A真偽値 (True/False)

比較結果の真偽値(True/False)が同じ形状の配列で出力されます。

この問題の解説ページを開く →

108真偽値の配列において、Trueが含まれているかどうか(1つでもTrueがあるか)を判定する関数はどれですか?

  1. Anp.any()
  2. Bnp.sum()
  3. Cnp.count_nonzero()
  4. Dnp.all()
正解と解説を見る

正解:Anp.any()

np.anyは要素の中にTrueが含まれているかを判定し出力します。

この問題の解説ページを開く →

109np.allclose(b, c, atol=10) を実行したときの処理内容として正しいものはどれですか?

  1. Abとcの各要素の差が10以上であるか判定する
  2. Bbとcの要素数が10個一致しているかを判定する
  3. Cbとcのすべての要素が絶対誤差10の範囲内で等しいかを判定する
  4. Dbとcの合計値の差が10以内か判定する
正解と解説を見る

正解:Cbとcのすべての要素が絶対誤差10の範囲内で等しいかを判定する

atolキーワード引数で絶対誤差を指定し、その範囲内ですべての要素が等しいかを判定します。

この問題の解説ページを開く →

110a.sum()(メソッド)と np.sum(a)(関数)の動作の違いについて正しいものはどれですか?

  1. A関数はエラーになりやすい
  2. Bメソッドの方が処理速度が速い
  3. C出力されるデータ型が異なる
  4. D内部的には同じ動作をしている
正解と解説を見る

正解:D内部的には同じ動作をしている

メソッド呼び出しと関数を用いた表現は、内部的には同じ動作をしています。

この問題の解説ページを開く →
Python3エンジニア認定データ分析試験の全分野一覧へ戻る