インデックス参照とスライス、axis

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、Q1 ~ 4 に答えてください.

Q1:変数 arr_2d の要素のうち、5 を出力してください.

Q2:変数 arr_2d から、以下の行列をスライスし出力してください.
   [[3, 4]
[6, 7]]

Q3:ndarray.sum() 関数を使って arr_2d から、以下のような配列を作成し出力してください.
   [3, 12, 21]

import numpy as np

arr_2d = np.arange(0,9).reshape(3,3)
print(arr_2d)

# Q1
print(##########)

[Q1の選択肢]
1. arr_2d[1,2]
2. arr_2d[2,3]
3. arr_2d[2,1]

# Q2
print(##########)

[Q2の選択肢]
1. arr_2d[1:, :2, :]
2. arr_2d[2:, :2]
3. arr_2d[1:, :2]

# Q3
print(##########)

[Q3の選択肢]
1. arr_2d.sum(axis= 0)
2. arr_2d.sum(axis=1)
3. arr_2d.sum(axis=2)

2 次元配列 – 行列

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、
変数 list を 2 次元の ndarray 配列に変換してから変数 my_arr に代入し出力してください.
また、変数 my_arr の各次元ごとの要素数を出力してください.
さらに、変数 my_arr を 4 x 2 の行列に変換してください.

import numpy as np

list = [[1, 2, 3, 4], [5, 6, 7, 8]]

# Q1:変数 list を 2 次元の ndarray 配列に変換し変数 my_arr に代入してください.
my_arr = ##########
print(my_arr)

[Q1の選択肢]
1. np.array2d(list)
2. np.array(list)
3. np.list_to_array(list)

# Q2:変数 my_arr の各次元ごとの要素数(各次元のサイズ)を出力してください.
print(##########)

[Q2の選択肢]
1. my_arr.shape
2. my_arr.shape[0]
3. my_arr.shape[0][0]

# Q3:変数 my_arr を 4 x 2 の行列に変換してください.
print(##########)

[Q3の選択肢]
1. my_arr.reshape(2, 4)
2. my_arr.reshape[4][2]
3. my_arr.reshape(4, 2)

乱数と np.random モジュール

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、np.random モジュールから randit() 関数、rand() 関数を
import してください.また、変数 my_arr に各要素が 0 以上 5 以下の整数からなる 2 x 2 行列を代入し、出力してください.
さらに、0 以上 1 未満の一様分布をもつ乱数を 2 つ作成し、変数 my_arr2 に代入してから 出力してください.

import numpy as np

# Q1:np.random モジュールから randit() 関数、rand() 関数を import してください.
##########

[Q1の選択肢]
1. from random import randint, rand
2. from numpy.random import radint, rand
3. from numpy import radint, rand

# Q2:変数 my_arr に各要素が 0 以上 5 以下の整数からなる 2 x 2 行列を代入してください.
my_arr = ##########
print(my_arr)

[Q2の選択肢]
1. rondom(0, 6, (2, 2))
2. randint(0, 6, (2, 2))
3. randint(0, 5, (2, 2))

# Q3:0 以上 1 未満の一様分布をもつ乱数を 2 つ作成してください.
my_arr2 = ##########
print(my_arr2)

[Q3の選択肢]
1. rand(2, (0, 1))
2. rand(2, 2)
3. rand(2)

転置行列

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、下記の設問に答えてください.

Q1:変数 my_arr を転置し、出力してください.

import numpy as np

my_arr = np.arange(15).reshape(5, 3)

# Q1
print(##########)

[Q1の選択肢]
1. np.transpose(my_arr)
2. transpose(my_arr)
3. my_arr.T

ソート

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 4 から選び、下記の設問に答えてください.
Q1:行ごとに変数 my_arr の要素をソートした場合のインデックスを表す配列を出力してください.

Q2:行ごとに変数 my_arr の要素を昇順にソートし出力してください.

Q3:変数 my_arr を列ごとにソートしてください.

import numpy as np

my_arr = np.array([[3, 4, 5], [9, 2, 6], [7, 8, 1]])

# Q1
print(##########)
# Q2
print(##########)
# Q3
print(##########)

[Q1,Q2,Q3の選択肢]
1. np.sort(my_arr, axis=0)
2. np.sort(my_arr, axis=1)
3. my_arr.argsort()
4. argsort(my_arr)

行列計算 とノルム

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、下記の設問に答えてください.
Q1 : 変数 arr_2d の転置行列と arr_2d のドット積を計算し、出力してください.
Q2 : 変数 my_vec の l1 ノルムを計算し出力してください.

import numpy as np

arr_2d = np.arange(9).reshape(3, 3)
my_vec = np.arange(9)

#Q1
print(##########)

[Q1の選択肢]
1. arr_2d.T・arr_2d
2. np.dot(arr_2d * arr_2d)
3. np.dot(arr_2d.T, arr_2d)

#Q2
print(##########)

[Q2の選択肢]
1. np.linalg.norm(my_vec)
2. np.linalg(my_vec)
3. np.norm(my_vec)

統計関数、平均・最大・最小・標準偏差・分散

次のコードで空欄になっている行に入る適切な選択肢を選び、下記の設問に答えてください.

Q1:変数 my_arr の各行ごとの平均を出力してください.
Q2:変数 my_arr の各列ごとの最小値を出力してください.
Q3:変数 my_arr のそれぞれの行の最大値のインデックスを出力してください.

import numpy as np

arr_2d = np.arange(25).reshape(5, 5)

# Q1
print(##########)
# Q2
print(##########)
# Q3
print(##########)

[Q1,Q2,Q3の選択肢]
1. my_arr.max(axis=0)
2. my_arr.min(axis=0)
3. my_arr.mean(axis=0)
4. my_arr.argmin(axis=0)
5. my_arr.mean(axis=1)
6. my_arr.argmax(axis=1)

ブロードキャスト

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、下記の設問に答えてください.

Q1:変数 arr_2d の各要素に各行のインデックス番号を掛けてください.
また、各行のインデックス番号を表す5 行 1 列の配列を用意してください.

import numpy as np

arr_2d = np.arange(25).reshape(5, 5)

# Q1
y = np.arange(5).reshape(5, 1)
print(arr_2d * y)

[Q1の選択肢]
1.
y = np.arange(5).reshape(1, 5)
print(arr_2d * y)
2.
y = np.arange(5).reshape(5, 1)
print(arr_2d * y)
3.
y = np.arange(5).reshape(5, 1)
print(np.dot(arr_2d, y))

Series の生成

下記の設問に対する答えとして相応しものを選択肢から選び、次のコードの空欄(##########)を埋めてください.

Q1:リスト型の変数 PRICE から Series を作成してください.
Q2:バリューに PRICE、インデックスに FRUITS を指定して Series を作成し変数 series に代入してください.
Q3:変数 series を辞書型に変換し変数 series_dict に代入してください.
Q4:series_dict と FRUIT_LIST を用いて Series を作成し、再び series に代入してください. ( インデックスには FRUIT_LIST を用いる.)

import pandas as pd
from pandas import Series

PRICE = [120, 100, 50, 350]
FRUIT = [“Orange”, “Grape”, “Strawberry”, “Apple”]
FRUIT_LIST = [“Apple”, “Grape”, “Apple”, “Strawbery”]

# Q1
obj = ##########
print(obj)

[Q1の選択肢]
1. Series(PRICE)
2. Series[PRICE]
3. PRICE.Series()

# Q2
series = ##########
print(series)

[Q2の選択肢]
1. Series(PRICE, index)
2. Series(PRICE, FRUIT)
3. Series(PRICE, index=FRUIT)

# Q3
series_dict = ##########
print(series_dict)

[Q3の選択肢]
1. to_dict(series)
2. series.to_dict()
3. dict(series)

# Q4
series = ##########
print(series)

[Q4の選択肢]
1. Series(dict=series_dict, index=FRUIT_LIST)
2. Series(to_series(series_dict), index=FRUIT_LIST)
3. Series(series_dict, index=FRUIT_LIST)

スライスと view

Q1 : 下記のコードを動かした場合、得られる出力として正しいもの 1 ~ 3 から選んでください.

import numpy as np

my_list = [1, 2, 3, 4, 5]
my_arr1 = np.array(my_list)
my_arr2 = np.array(my_list)

my_arr1_copy = my_arr1[:]
my_arr1_copy[0] = 10
my_arr2_copy = my_arr2.copy()
my_arr2_copy[0] = 10
print(“スライスと ndarray.copy() による挙動の違いから view について理解する.”)
print(“my_arr1 : “, my_arr1)
print(“my_arr1_copy : “, my_arr1_copy)
print(“my_arr2 : “, my_arr2)
print(“my_arr2_copy : “, my_arr2_copy)

[Q1の選択肢]
1.
スライスと ndarray.copy() による挙動の違いから view について理解する.
my_arr1 : [1 2 3 4 5]
my_arr1_copy : [10 2 3 4 5]
my_arr2 : [1 2 3 4 5]
my_arr2_copy : [10 2 3 4 5]
2.
スライスと ndarray.copy() による挙動の違いから view について理解する.
my_arr1 : [10 2 3 4 5]
my_arr1_copy : [10 2 3 4 5]
my_arr2 : [1 2 3 4 5]
my_arr2_copy : [10 2 3 4 5]
3.
スライスと ndarray.copy() による挙動の違いから view について理解する.
my_arr1 : [10 2 3 4 5]
my_arr1_copy : [10 2 3 4 5]
my_arr2 : [10 2 3 4 5]
my_arr2_copy : [10 2 3 4 5]