[Python]初心者筆記3(numpy.array的操作效果類似LINQ,array快速宣告法,用array畫曲線圖)

[Python]初心者筆記3(numpy.array的操作效果類似LINQ,array快速宣告法,用array畫曲線圖)

#進行數據分析之前常要引用的函式庫
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
L = [200, 300, 400]

#殘念的……無法直接針對python的list做乘以三倍的動作
3 * L

#此時只要利用numpy.array做轉型的動作,就能直接將array裡面的數字乘以三倍
#達成類似c sharp裡面類似LINQ的效果
brandNewL = np.array(L)

#此時可以直接乘以三倍了
3 * brandNewL

#順便秀一下array.sum()
#可以快速達成c#的LINQ的效果
array3 = array1 * array2
array3.sum()

#順便秀一下np.dot也可以達成上面的"矩陣相乘"+"加總sum()"的效果
#用以前學過的高三數學來說,np.dot就是做內積
np.dot(array1, array2)

#篩選出array裡面,資料<0的部分
L = np.array([3, -2, 4, -5, 333, -555, -60])
#這樣子就可以達到類似C#的LINQ的效果了!寫法很簡潔!
L[L<0]

在python裡面強烈建議優先使用array的方式做數據分析(因為處理速度快), 不到最後關頭,不使用for迴圈去處理list

example:利用numpy.array快速寫出矩陣相乘:

#進行數據分析之前常要引用的函式庫
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

#轉成numpy.array之後即可簡單進行array相乘
#根據經驗來講,c sharp裡面必須使用迴圈
#大量數據相乘的時候,的確python用python寫比較簡單
array1 = np.array([2, 4, 6, 8 , 10]) 
array2 = np.array([1, 3, 5, 7, 9])

array1 * array2


#示範將array分組的方式
array1 = np.random.randn(100)
#將陣列分成五組,每組20個(會改變array1本身value)
array1.shape = (5, 20)
#將陣列分成五組,每組20個(不會會改變array1本身value)
array1.reshape(1, 100)
#真的要改掉array1的value的話,就用assign = 即可
array1 = array1.reshape(1, 100)

array快速宣告法:
 

#進行數據分析之前常要引用的函式庫
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

#快速產生二維矩陣的方式,如果要做二維矩陣的for迴圈
#也許可考慮先產生這樣的xy矩陣
xy = [[x,y] for x in range(10) for y in range(5)]
xy = np.array(xy)

#產生都是0的矩陣
np.zeros(10)

#產生都是0的二維矩陣
np.zeros((3,1))

#產生都是1的一維矩陣
np.ones(5)

#產生都是1的2維矩陣
np.ones((5,2))

#產生單位矩陣
np.eye(4)

#用array畫出曲線圖
#亂數取出0~1之間
y = np.random.rand(50)
y
#然後就可以畫出曲線圖
plt.plot(y)

#用array畫出曲線圖內有兩個曲線
#0~10之間,取100個點
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x) + x)
plt.plot(x, np.cos(x))



參考資料:
成為python數據分析達人的第一課(自學課程)
http://moocs.nccu.edu.tw/course/123/intro