Numpy 01

Infi_chu發表於2018-09-12

 Infi-chu:

http://www.cnblogs.com/Infi-chu/

import numpy as np

# 建立的陣列
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])

# 基本屬性
count = stus_score.size
print(`該陣列的元素有 --> `,count)
shape = stus_score.shape
print(`該陣列的形狀是 --> `,shape) # shape結果的第一個元素是行,第二個元素是列
ndim = stus_score.ndim
print(`該陣列的維度 --> `,ndim)
type = stus_score.dtype
print(`該陣列元素型別是 --> `,type)


# 快速建立n維陣列的API函式
# 建立10行10列的數值為浮點1的矩陣
array_one = np.ones([10,10])
print(`array_one --> `,array_one)
# 建立10行10列的數值為浮點1的矩陣
array_zero = np.zeros([10,10])
print(`array_zero --> `,array_zero)

# Numpy建立隨機陣列
# 均值分佈
```
np.random.rand(10, 10)建立指定形狀(示例為10行10列)的陣列(範圍在0至1之間)
np.random.uniform(0, 100)建立指定範圍內的一個數
np.random.randint(0, 100) 建立指定範圍內的一個整數
```

# 正態分佈
```
給定均值/標準差/維度的正態分佈np.random.normal(1.75, 0.1, (2, 3))
```

# 陣列索引、切片
# 正態生成4行5列的二維陣列
arr = np.random.normal(1.75, 0.1, (4, 5))
print(arr)
# 擷取第1至2行的第2至3列(從第0行算起)
after_arr = arr[1:3, 2:4]
print(after_arr)

# 改變陣列形狀(要求前後元素個數匹配)
print("reshape函式的使用!")
one_20 = np.ones([20])
print("-->1行20列<--")
print (one_20)
one_4_5 = one_20.reshape([4, 5])
print("-->4行5列<--")
print (one_4_5)

# 陣列的計算
# 比較
res = stus_score > 80
print(res)
res = np.where(stus_score > 80)
print(res)
res = np.where(stus_score > 80,`Yes`,`No`)  # 大於80的重寫為Yes,否則為No
print(res)
# 求最大值
print(`陣列是:
`,stus_score)
# 求每一列的最大值(0表示列)
result = np.amax(stus_score, axis=0)
print("每一列的最大值為:
",result)
# 求每一行的最大值(1表示列)
result = np.amax(stus_score, axis=1)
print("每一行的最大值為:
",result)
# 求最小值
# 求每一行的最小值(0表示列)
print("每一列的最小值為:")
result = np.amin(stus_score, axis=0)
print(result)
# 求每一行的最小值(1表示行)
print("每一行的最小值為:")
result = np.amin(stus_score, axis=1)
print(result)
# 求平均值
# 求每一行的平均值(0表示列)
print("每一列的平均值:")
result = np.mean(stus_score, axis=0)
print(result)
# 求每一行的平均值(1表示行)
print("每一行的平均值:")
result = np.mean(stus_score, axis=1)
print(result)
# 求方差
# 求每一行的方差(0表示列)
print("每一列的方差:")
result = np.std(stus_score, axis=0)
print(result)
# 求每一行的方差(1表示行)
print("每一行的方差:")
result = np.std(stus_score, axis=1)
print(result)

# 陣列的運算
# 加法
print("加分前:")
print(stus_score)
# 為所第一列成績都加5分
stus_score[:, 0] = stus_score[:, 0]+5
stus_score_new = stus_score[:, 0]+5
print("加分後:")
print(stus_score)
print(``)
print(stus_score_new)
# 乘法
print("減半前:")
print(stus_score)
# 平時成績減半
stus_score[:, 0] = stus_score[:, 0]*0.5
print("減半後:")
print(stus_score)
# 陣列間運算
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
c = a + b
d = a - b
e = a * b
f = a / b
print("a+b為", c)
print("a-b為", d)
print("a*b為", e)
print("a/b為", f)

# np.dot()
# (M行, N列) * (N行, Z列) = (M行, Z列)
# 平時成績佔40% 期末成績佔60%, 計算結果
q = np.array([[0.4], [0.6]])
result = np.dot(stus_score, q)
print("最終結果為:")
print(result)

# 矩陣拼接
# 垂直拼接
print("v1為:")
v1 = [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]]
print(v1)
print("v2為:")
v2 = [[12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]]
print(v2)
result = np.vstack((v1, v2))
print("v1和v2垂直拼接的結果為:")
print(result)
# 水平拼接
print("v1為:")
v1 = [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]]
print(v1)
print("v2為:")
v2 = [[12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]]
print(v2)
result = np.hstack((v1, v2))
print("v1和v2水平拼接的結果為")
print(result)

 

相關文章