
6
PS 程式碼後面沒有print(),是因為我用jupyter notebook,如果寫在.py檔,最後印出記得要用 print(包起來)
一維
# 方法一
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 元素相加
result1 = arr1 + arr2
# 元素相減
result2 = arr1 - arr2
result2_2 = arr1 -1
# 元素相乘
result3 = arr1 * arr2
result3_2 = arr2 ** 2
result3_3 = arr2 ** 3
print(result1)
print(result2)
print(result2_2)
print(result3)
print(result3_2)
print(result3_3)

import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 元素平方
result4 = np.square(arr1)
# 元素求和
result5 = np.sum(arr1)
# 元素均值 # 可以改 max, min
result6 = np.mean(arr1)
# 這樣也行
result6_2 = arr1 + arr2
result6_2.mean()
# 計算
result7 = arr1 / arr1
result8 = 1 / arr1
# 平方根
result9 = np.sqrt(arr2)
# 度量函數
result10 = np.sin(arr2)
# 對數
result11 = np.log(arr2)
print(result4)
print(result5)
print(result6)
print(result6_2)
print(result7)
print(result8)
print(result9)
print(result10)
print(result11)

# 方法二
import numpy as np
lst1 = [1, 2, 3, 4]
lst2 = [5, 6, 7, 8]
np1 = np.array(lst1+lst2)
np1
# 會印出 array([1, 2, 3, 4, 5, 6, 7, 8])

二維
# 一維 -> 二維
import numpy as np
lst5 = [1,2,3,4]
lst6 = [5,6,7,8]
np5 = np.array(lst5)
np6 = np.array(lst6)
np7 = np.array(lst5+lst6)
ans = np7.reshape((4,2))
print(ans)
print(np7.sum())

import numpy as np
# 假設有一個名為final的矩陣
final = np.array([[1, 2], [3, 4]])
# 增加所有元素的值
final += 5
# 相乘所有元素的值
final_2 = final * 5
print("增加後的矩陣:")
print(final)
print("相乘後的矩陣:")
print(final_2)

二維矩陣相乘 (答案都相同)
lst5 = [1,2,3,4]
lst6 = [5,6,7,8]
np5 = np.array(lst5)
np6 = np.array(lst6)
np5.dot(np6)
#
相同
lst5 = [1,2,3,4]
lst6 = [5,6,7,8]
np5 = np.array(lst5)
np6 = np.array(lst6)
result_matrix = np.dot(np5, np6)
result_matrix

import numpy as np
array_2d = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
x = array_2d.sum(axis=0)
y = array_2d.sum(axis=1)
std = array_2d.std() # 等同 np.std(array_2d)
print(x)
print(y)
print(std)

一維
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
# 獲取單個元素
element = arr[0]
# 獲取範圍內 ALL元素
element = arr[:]
# 獲取範圍內的元素 (看index! 取index1~index3)
sub_arr = arr[1:4]
# 條件索引
filtered_arr = arr[arr > 3]
print(element)
print(sub_arr)
print(filtered_arr)

二維
import numpy as np
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
array_2d[0][0]

import numpy as np
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(array_2d[2,:])
print(array_2d[-1,:])

import numpy as np
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
array_2d[1:3,:]

import numpy as np
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
array_2d[:2,1:]

練習: 如果我要取每組的第二位
import numpy as np
array_2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
array_2d[0:3,1:2]

這樣會跑掉 array_2d[:3,1]
import numpy as np
np.arange(0,10)

import numpy as np
print(np.arange(0,15,2))
print(np.arange(0,15,2)[2])
print(np.arange(0,15,2)[0:3]) # = np.arange(0,15,2)[:3]

import numpy as np
print(np.zeros(5))
print(np.zeros((3,4)))

import numpy as np
print(np.ones((3,4)) + 1)
(np.ones(5) + 10)

0~5 中取十個值
import numpy as np
np.linspace(0,5,10)

創建一個包含1到50 一維NumPy陣列 -> 重新排列為5×10的二維陣列
import numpy as np
np.arange(1,51).reshape(5,10)/100

創建一個有100個均勻分佈在0.0到50的浮點數一維NumPy陣列 -> 重新排列為10×10的二維陣列
import numpy as np
np.linspace(0.1,50,100).reshape(10,10)

整數 有可能重複
一維
隨機取1個整數數值
import numpy as np
# 隨機生成包含1個整數的一維NumPy陣列,範圍是1到20(包括1和20)
random_array = np.random.randint(1, 21)
random_array

隨機取5個整數數值
import numpy as np
# 隨機生成包含5個整數的一維NumPy陣列,範圍是1到20(包括1和20)
random_array = np.random.randint(1, 21, 5)
random_array

二維
import numpy as np
# 隨機生成包含5個整數的一維NumPy陣列,範圍是1到20(包括1和20) -> 轉為二維
# 等同 random_array = np.random.randint(1, 21, (2,3)),可以直接包進去變二維,不需要.reshape( , )
random_array = np.random.randint(1, 21, 6).reshape(2,3)
random_array

不重複
一維
import numpy as np
# 隨機生成包含5個不重複整數的一維NumPy陣列,範圍是1到20(包括1和20)
random_array = np.random.choice(np.arange(1, 21), size=5, replace=False)
random_array

二維
import numpy as np
# 隨機生成包含5個不重複整數的一維NumPy陣列,範圍是1到20(包括1和20) -> 轉為二維
random_array = np.random.choice(np.arange(1, 21), size=6, replace=False).reshape(2,3)
random_array

意思相同,True 允許重複
random_array = np.random.randint(1, 21, 6).reshape(2,3)
= np.random.choice(np.arange(1, 21), size=6, replace=True).reshape(2,3)
自定範圍內
一維
隨機取1個小數數值
import numpy as np
# 1~10中取
random_array_uni = np.random.uniform(1, 10)
# 四捨五入到小數點後兩位
rounded_array = np.round(random_array_uni, 2)
rounded_array

隨機取5個小數數值
import numpy as np
# 1~10中取五位數
random_array_uni = np.random.uniform(1, 10, 5)
# 將每個數四捨五入到小數點後兩位
rounded_array = np.round(random_array_uni, 2)
rounded_array

二維
陣列小數
import numpy as np
# 1~10中取六位數
random_array_uni = np.random.uniform(1, 10, 6)
# 將每個數四捨五入到小數點後兩位
rounded_array = np.round(random_array_uni, 2)
rounded_array.reshape(3,2)

從0到1均勻分佈
“`=
import numpy as np
random_array_uni_rand = np.random.rand(2,3)
random_array_uni_rand

<br/>
### 設置 seed np.random.seed( )
```=
import numpy as np
# 設置隨機數生成器的種子
np.random.seed(101)
# 隨機數在每次運行時都將是【相同】的
random_value = np.random.choice([1, 2, 3, 4, 5])
print("隨機選擇的值:", random_value)

import numpy as np
# 創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6]])
arr.shape

import numpy as np
arr = np.array([10, 5, 8, 15, 3])
max_index = arr.argmax()
min_index = arr.argmin()
print("最大值的索引是:", max_index)
print("最小值的索引是:", min_index)

均值(平均值)為 0,標準差為 1, 隨機常態分佈
import numpy as np
random_normal = np.random.randn(6)
random_normal

均值(平均值)為 0,標準差為 1,隨機常態分佈繪圖
import numpy as np
import matplotlib.pyplot as plt
# 生成更多符合標準正態分佈的隨機數
random_data = np.random.randn(1000)
# 繪製直方圖 # bins長條圖數量 #density=True 總面積等於1 #alpha透明度
plt.hist(random_data, bins=50, density=True, alpha=0.6, color='b', edgecolor='black')
plt.xlabel('隨機數值')
plt.ylabel('概率密度')
plt.title('正態分佈直方圖')
plt.grid(True)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
# 生成 20x30 的常態分佈的隨機數
random_data = np.random.normal(size=(20, 30))
# 展平成一維陣列
flattened_data = random_data.flatten()
# 繪製直方圖
plt.hist(flattened_data, bins=10, density=True, alpha=0.6, color='b', edgecolor='black')
plt.xlabel('隨機數值')
plt.ylabel('概率密度')
plt.title('常態分佈直方圖 (範圍1~100)')
plt.grid(True)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
# 生成 1000 個符合標準差為 50 的正態分佈的隨機數
random_data = np.random.normal(loc=0, scale=50, size=1000)
# 繪製直方圖
plt.hist(random_data, bins=50, density=True, alpha=0.6, color='b', edgecolor='black')
plt.xlabel('隨機數值')
plt.ylabel('概率密度')
plt.title('正態分佈直方圖 (標準差 = 50)')
plt.grid(True)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
# 生成 1 維常態分佈的隨機數(範圍-30~40)
random_data = np.random.normal(loc=5, scale=10, size=1000) # 均值為 5,標準差為 10
# 繪製直方圖
plt.hist(random_data, bins=30, density=True, alpha=0.6, color='b', edgecolor='black')
plt.xlabel('隨機數值')
plt.ylabel('概率密度')
plt.title('常態分佈直方圖 (範圍-30~40)')
plt.grid(True)
plt.show()

一維
import numpy as np
# 創建一個空的 1D NumPy 數組
final = np.empty(2, dtype=int)
# 將數組的第一個元素設置為 18
final[0] = 18
final[1] = 20
final[0] = 30
final

二維
import numpy as np
final = np.empty(4, dtype=int)
final_2d = final.reshape(2, 2)
final_2d[0][0] = 10
final_2d[0][1] = 15
final_2d[1][0] = 20
final_2d[1][1] = 25
final_2d[1][0] = 30
final_2d

一維
# 增加 index 到最後
final = [1,2,3,4,5,6]
matrix = final
new_element = 350
matrix = np.append(matrix, new_element)
matrix

二維
import numpy as np
final = np.array([[1, 2], [3, 4]])
# 要添加的新元素
new_element = 350, 300
matrix_2 = np.vstack((final, [new_element]))
matrix_2

final_copy = final.copy()
final_copy[:] = 100
final_copy

一維
import numpy as np
array_1d = np.array([1, 2, 3])
boo1_arr = array_1d > 1
print(boo1_arr)
print(boo1_arr.astype(int))
#
array_ = np.arange(1,11)
bool_array_ = array_ > 5
print(bool_array_)
print(bool_array_.astype(int))

import numpy as np
array_1d = np.array([1, 2, 3])
boo1_arr = array_1d > 1
print(boo1_arr)
print(boo1_arr.astype(int))

可以寫在一起
“`=
import numpy as np
array_ = np.arange(1,11)
boolarray = array > 5
result = array[boolarray]
result

<br/>
二維
import numpy as np
array_2d = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
boo1_arr = array_2d > 5
print(boo1_arr)
print(boo1_arr.astype(int))

<br/>
> 二維只會印出符合條件的
```=
import numpy as np
array_2d = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
boo1_arr = array_2d > 5
result = array_2d[boo1_arr]
result

import numpy as np
import matplotlib.pyplot as plt
# 建立一個簡單的圖像矩陣
image_matrix = np.random.random((100, 100))
# 顯示影像
plt.imshow(image_matrix, cmap='gray')
plt.title("隨機產生的圖像")
plt.show()

import numpy as np
# 建立一個範例的鄰接矩陣表示圖結構
adjacency_matrix = np.array([[0, 1, 1], [1, 0, 0], [1, 0, 0]])
# 判斷節點之間是否有連接
if adjacency_matrix[0, 1] == 1:
print("節點0和節點1有連接")
else:
print("節點0和節點1無連接")
# 會印出
節點0和節點1有連接

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
# 建立範例資料集(學習時間和成績)
data = pd.DataFrame({'學習時間(小時)': [1, 2, 3, 4, 5],
'成績': [60, 70, 75, 55, 90]})
# 建立線性迴歸模型
model = LinearRegression()
# 擬合模型
X = data[['學習時間(小時)']] # 自變數:學習時間
y = data['成績'] # 因變數:成績
model.fit(X, y)
# 預測新數據點的成績
new_study_time = np.array([4]).reshape(-1, 1) # 新的學習時間
predicted_score = model.predict(new_study_time)
# 列印資料表
print(data)
print("預測的成績:", predicted_score)
