[!abstract]+ Curriculum
1. NumPy 란
2. 데이터 조작
3. NumPy 와 메모리
4. Numpy 로 통계해석
5. 앞으로의 학습 진행 방법
첨삭문제
#np/load
shape
를 맞추는 것import numpy as np
arr_1 = np.loadtxt("./4002_new_numpy/csv_example.csv",
delimiter=",", # 区切り文字をカンマに指定
skiprows=1, # 最初の1行をスキップ
usecols=[0, 1, 2]) # 使用する列番号を指定 print(arr_1)
import numpy as np
# csv_example(1.2.4参照)を読み込む
arr_1 = np.loadtxt("./4002_new_numpy/csv_example.csv", delimiter=",", skiprows=1, usecols=[0, 1, 2] )
# Heightの列のみ0.394をかける
# arr_2は1行3列の配列
arr_2 = np.array([1, 0.394, 1])
arr_3 = arr_1 * arr_2
# arr_1とarr_3を比較して出力
print('arr_1')
print(arr_1)
print('arr_3')
print(arr_3)
arr_3 = arr_1[::2] # ひとつおきに要素を抽出
print(list_1[2][1])
print(arr_1[2, 1])
import numpy as np
list_1 = [[1,2],[3,4],[5,6]]
arr_1 = np.array(list_1)
# リストにより複数要素を抽出
print(arr_1[[2, 1]])
>>> 出力結果
[[5 6]
[3 4]]
import numpy as np
list_1 = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]
arr_1 = np.array(list_1)
print('軸の入れ替え前 arr_1.shape: ', arr_1.shape)
print(arr_1)
arr_2 = arr_1.transpose(1, 0, 2)
print('arr_1を0軸と1軸の入れ替え後 arr_2.shape: ', arr_2.shape)
print(arr_2)
arr_3 = arr_2.transpose(2, 1, 0)
print('arr_2を0軸と2軸で入れ替え後 arr_3.shape: ', arr_3.shape)
print(arr_3)
>>> 出力結果
軸の入れ替え前 arr_1.shape: (2, 3, 2)
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]]
arr_1を0軸と1軸の入れ替え後 arr_2.shape: (3, 2, 2)
[[[ 1 2]
[ 7 8]]
[[ 3 4]
[ 9 10]]
[[ 5 6]
[11 12]]]
arr_2を0軸と2軸で入れ替え後 arr_3.shape: (2, 2, 3)
[[[ 1 3 5]
[ 7 9 11]]
[[ 2 4 6]
[ 8 10 12]]]
import numpy as np
np.random.seed(1)
# arr_1を作成(ここは変更しないでください)
rand_row, rand_col = np.random.randint(1, 10, 2)
arr_1 = np.random.rand(rand_row, rand_col)
# arr_1のshapeを変更し、arr_2に代入しましょう
arr_2 = arr_1.reshape(-1,1)
print(arr_2)
#np/resize
import numpy as np
arr_1 = np.array([1, 2, 3, 4, 5], dtype=np.int8) # ここでデータ型を「int8」に指定
print(arr_1.dtype) # データ型を確認
print(arr_1)
>>> 出力結果
int8
[1 2 3 4 5]
#np/sort
#np/view
import numpy as np
arr_1 = np.array([1, 2, 3, 4, 5])
# arr_1のビューを作成しましょう
arr_2 = arr_1[:2]
arr_2[1] = 100
print(arr_1)
print(arr_2)
>>> 出力結果
[ 1 100 3 4 5]
[ 1 100]
#np/stats
import numpy as np
# 乱数の初期化
np.random.seed(0)
# 指定された大きさの画像を乱数を用いて生成する関数
# 仮引数mは画像の縦の大きさ、nは画像の横の大きさです
def make_image(m, n):
# m×n行列の各成分を0~5の値でランダムに満たしてください
image = np.random.randint(1, 6, size=(m, n))
return image
# 渡された行列の一部を変更する関数
def change_matrix(matrix):
# 与えられた行列の形を取得し、shapeに代入してください
shape = matrix.shape
# 行列の各成分について、変更するかしないかをランダムに決めた上で
# 変更する場合は0~5のいずれかの整数にランダムに入れ替えてください
tmp_matrix = matrix.reshape(-1,1)
for i in range(len(tmp_matrix)):
if np.random.randint(0,2) == 1:
tmp_matrix[i] = np.random.randint(1, 5)
return tmp_matrix.reshape(shape)
# ランダムに画像を作成
image1 = make_image(3, 3)
print(image1)
# ランダムに変更を適用する
image2 = change_matrix(np.copy(image1))
print(image2)
# image1とimage2の差分を計算し、image3に代入してください
image3 = image1 - image2
print(image3)
# image3の各成分が絶対値である行列をもとめimage3に再代入してください
image3 = np.absolute(image3)
# image3を出力
print(image3)
import numpy as np
# 乱数の初期化
np.random.seed(0)
# 指定された大きさの画像を乱数を用いて生成する関数
# 仮引数mは画像の縦の大きさ、nは画像の横の大きさです
def make_image(m, n):
# m×n行列の各成分を0~5の値でランダムに満たしてください
image = np.random.randint(0, 6, size=(m, n))
return image
# 渡された行列の一部を変更する関数
def change_matrix(matrix):
# 与えられた行列の形を取得し、shapeに代入してください
shape = matrix.shape
# 行列の各成分について、変更するかしないかをランダムに決めた上で
# 変更する場合は0~5のいずれかの整数にランダムに入れ替えてください
tmp_matrix = matrix.reshape(-1,1)
for i in range(len(tmp_matrix)):
if np.random.randint(0,2) == 1:
tmp_matrix[i] = np.random.randint(0, 6)
return tmp_matrix.reshape(shape)
# ランダムに画像を作成
image1 = make_image(3, 3)
print(image1)
# ランダムに変更を適用する
image2 = change_matrix(np.copy(image1))
print(image2)
# image1とimage2の差分を計算し、image3に代入してください
image3 = image1 - image2
print(image3)
# image3の各成分が絶対値である行列をもとめimage3に再代入してください
image3 = np.absolute(image3)
# image3を出力
print(image3)