簡介
pip 是 python套件管理器
可以透過pip安裝、更新、移除python套件
sudo apt install python-pip #python2
sudo apt install python3-pip #python3
pip install numpy
pip3 install numpy
若要使用某套件,要先import才可以使用。
import <套件名>
import <套件名> as <簡稱>
from <套件名> import <特定功能>
import numpy #引入名為numpy的模組
print(numpy.pi)
import numpy as np #引入名為numpy的模組,並命名為np
print(np.pi)
from numpy import pi
print(pi)
一個好用的數學運算模組
提供與matlab 相似的功能
常常與 matplotlib 一同使用
import numpy as np
coeff = [3.2,2,1] #方程式係數為 3.2x^2+2x+1
np.roots(coeff)
不過其實numpy這個功能博大精深,今天僅大概介紹最基礎的資料儲存部份
numpy array 與 list 是很相像的
然而list 中的子元素可以是各式各樣的,這種方式當然有他的方便之處,但是這樣靈活的儲存方式卻是相當的消耗記憶體與cpu
而numpy array 則規定了只能有一種資料儲存方式,這種結構與C++類似,效率也比較高
注意 一定是用中括弧"[ ]包起來"
import numpy as np
wrong = np.array(1,2,3)
a=np.array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]]) #整數宣告
b=np.array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]],dtype=float) #浮點數宣告
#可用 np.dtype 查詢
array1 = np.arange(10)
array2 = np.arange(1,10,0.1)
#vs range
list1 = list(range(10))
list2 = list(range(1,10,0.1)) #只能是整數
array1 = np.linspace(0,8,100)
#在 0~ 8 之間插入100個數
array1 = np.linspace(0,8,100)
array1 = array1.reshape(20,5) #將 array 變成 20*5的矩陣
array1 = np.linspace(0,7,100).reshape(4,25) #可以寫成一串
array1 = np.zeros((3,4))
array2 = np.ones((2,3,4))
#vs range是整數
此處的加減乘除並非矩陣的乘除,而是對相對應的數字做計算
a = np.arange(10,60,10) #a=10 20 30 40 50
b = np.arange(1,6,1) #b=1 2 3 4 5
print(a-b)
print(a+b)
print(a*b)
print(a/b)
print(b**2)
a+=a #就像C++一樣
print(a)
c = np.linspace(0,90,100)
print(np.sin(np.deg2rad(c)))
d = np.linspace(0,np.pi/2,100)
print(np.sin(d))
print(c<45)
A:
1 | 1 |
---|---|
0 | 1 |
B: | |
2 | 0 |
–––– | –––– |
3 | 4 |
A = np.array( [[1,1],[0,1]] )
B = np.array( [[2,0],[3,4]] )
print(A@B)
print(A.dot(B))
array1
| 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
| –––– | –––– |–––– |–––– |–––– |–––– |–––– |–––– |–––– |–––– |–––– |
array2
10. | 10.90909091 | 11.81818182 | 12.72727273 | 13.63636364 |
---|---|---|---|---|
14.5454545 | 15.45454545 | 16.3636363 | 17.27272727 | 18.18181818 |
19.0909090 | 20. | 20.90909091 | 21.81818182 | 22.72727273 |
23.63636364 | 24.54545455 | 25.45454545 | 26.3636363 | 27.27272727 |
28.18181818 | 29.09090909 | 30. | 30.90909091 | 31.81818182 |
32.72727273 | 33.63636364 | 34.54545455 | 35.45454545 | 36.36363636 |
37.27272727 | 38.18181818 | 39.09090909 | 40. | 40.90909091 |
41.81818182 | 42.72727273 | 43.63636364 | 44.54545455 | 45.45454545 |
46.36363636 | 47.27272727 | 48.18181818 | 49.09090909 | 50 |
50.90909091 | 51.81818182 | 52.72727273 | 53.63636364 | 54.54545455 |
55.45454545 | 6.36363636 | 57.27272727 | 58.18181818 | 59.09090909 |
60. | 60.90909091 | 61.81818182 | 62.72727273 | 63.63636364 |
69.09090909 | 70. | 70.90909091 | 71.81818182 | 72.72727273 |
73.63636364 | 74.54545455 | 75.45454545 | 76.36363636 | 77.27272727 |
78.18181818 | 79.09090909 | 80. | 80.90909091 | 81.81818182 |
82.72727273 | 3.63636364 | 84.54545455 | 85.45454545 | 86.36363636 |
87.27272727 | 88.18181818 | 89.09090909 | 90. | 90.90909091 |
91.8181818 | 92.72727273 | 93.63636364 | 94.54545455 | 95.45454545 |
96.36363636 | 97.27272727 | 98.18181818 | 99.09090909 | 100 |
array1 = np.linspace(10,100,10)
array1[0]
array1[0:3]
array1[:]
array1[::-1]
array2 = np.linspace(10,100,100)
array2 = array2.reshape(20,5)
array2[:,:]
array2[:,1:3]
array2[2:4,1]
array2[0,-2] #倒數第二個
繳交方式說明
scp -P 'Port' "檔名" 帳號@ip:要存的路徑
讀取以下json檔,計算出10秒後,物體的位移(m)
https://drive.google.com/file/d/11AgYNS6zUCh1n1yoiF6PSTtjz_ylaNA3/view?usp=sharing
備註:
hint : https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html
Json資料的Key:
Mass : 質量(kg)
vel_x: X方向初速(m/s)
vel_y: Y方向初速(m/s)
vel_z: Z方向初速(m/s)
Force_x : X方向的分力(N)
Force_y : Y方向的分力(N)
Force_z : Z方向的分力(N)
INPUT:
homework.json
OUTOUT:
position_x: 10
position_y: 50
position_z: 5