零基礎學習Python數據分析:科學計算庫Numpy(1)
歡迎來到統計分布NumPy!在這一單元中,將會介紹強大的Python模塊,NumPy。
NumPy可以使我們的處理大量數據和計算統計特性。當我們結合NumPy和Matplotlib,我們可以可視化數據集,並且更好地理解不同類型的分布。有了這些技能,你就可以開始分析數據集,並創建專業的視覺效果,你可以立即開始應用於投資組合和專業實踐中。
本單元包括四小節。
Unit 3 Statistical Distributions with NumPy
Lesson 1 Introduction to Numpy
NumPy是一個強大的Python模塊,用於科學計算和數據存儲。在本課中,您將學習如何創建NumPy數組,對它們進行基本的操作,然後選擇特定列columns,行rows和元素elements。
先來看一個列子簡單地對Numpy有一個了解。
https://s3.amazonaws.com/codecademy-content/courses/numpy/numpy_introduction.htmlimport numpy as np
別忘了在使用模塊前導入相應的模塊,這是我們做任何事情的第一步。
一、一維數組 1-D Array
一個NumPy Array數組是一種特殊類型的list。它是一個包含多個items的數據結構。每個items可以是任何類型的(字元串、數字,甚至其他數組)。
創建array數組
my_array = np.array([1, 2, 3, 4, 5, 6])
也可以先創建一個list,再用np.array()語句將它轉化為數組。
my_list = [1, 2, 3, 4, 5, 6]my_array = np.array(my_list)
通常我們不會自己創建數組,而是導入已知數據生成數組。我們導入csv文件sample.csv
,
34,9,12,11,7
csv_array = np.genfromtxt(sample.csv, delimiter=,)
注意我們導入的csv文件分隔符為『,』,所以這裡使用delimiter=,
,但有時也會有其他分隔符的文件,最常見的是一些製表符或冒號。
二、一維數組的簡單計算
Numpy array比list更好操作,因為它可以對精確到對每個單元進行操作。(element-wise operations.)
來設想一下對list和array進行同樣的操作的情況
# With a listl = [1, 2, 3, 4, 5]l_plus_3 = []for i in range(len(l)): l_plus_3.append(l[i] + 3)
# With a arraya = np.array(l)a_plus_3 = a + 3
可以看到 對list每個單元進行操作需要使用loop循環。但是有了array,我們可直接添加3,減法乘法除法也是如此。
也可以直接對數組進行平方和平方根的運算。
>>> a ** 2array([ 1, 4, 9, 16, 25, 36])>>> np.sqrt(a)array([ 1, 1.41421356, 1.73205081, 2, 2.23606798, 2.44948974])
數組們可以彼此相加減(如果具有相同個數的單元)
a = np.array([1, 2, 3, 4, 5])b = np.array([6, 7, 8, 9, 10])print a + b
結果為array([ 7, 9, 11, 13, 15])
二、對數組進行邏輯操作
對一維數組進行邏輯操作非常簡單。要尋找數組中大於5的數,
a = np.array([10, 2, 2, 4, 5, 3, 9, 8, 9, 7])print a[a>5]
>>array([10, 9, 8, 9, 7])
檢測數組裡的每個數是否大於5
print a>5
>> array([True, False, False, False, False, False, True, True, True, True], dtype=bool)
和前面說的一樣,若要增加更複雜的條件,我們可以使用and『&』和or『|』.
print a[(a > 5) | (a < 2)]
>>array([10, 9, 8, 9, 7])
三、選擇
如果我們想要選擇一維數組中第一個元素我們可以使用語句,假設數組為a = np.array([5, 2, 7, 0, 11])
print a[0]
假設我們想從數組的末端開始查找時,使用語句
printed a[-1]
-1指的是數組最末端的數,並非倒數第二個數
查找一個數組裡的多個元素時,a[1:3]
會選擇從a[1]到a[3]的所有元素(不包括a[3])。結果為array([2, 7])。a[:3]=array([5, 2, 7]),表示在a[3]前的所有元素(不包括a[3])。a[-3:]=array([7, 0, 11])表示最後三個元素。
四、二維數組 Two-Dimensional Arrays
一個二維數組是由多個具有相同個數元素的list組成,如
np.array([[92, 94, 88, 91, 87], [79, 100, 86, 93, 91], [87, 85, 72, 90, 92]])
上述二維數組每行代表了一次考試,每列代表了一個學生的成績。
然而下述數組卻不是二維數組。
np.array([[29, 49, 6], [77, 1]])
那麼。如何從二維數組裡選擇元素呢?和一維數組非常類似。從維數組裡選擇元素里選擇元素的syntax是a[row,column]
(a是一個二維數組) 。內部數組的關係是以軸axes的方式確定的,一個二維數組有兩個軸:x軸代表共享相同的索引位置的值(在同一列),和y軸代表共享數組(在同一行)。
這樣講很抽象,來看一個例子
a = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]])print a[2,1]
>>16 即至第三行的第二個數。
# selects the first columnprint a[:,0]
>>array([32,12,2])
# selects the second rowprint a[1,:]
>>array([12,10,5,23,1])
# selects the first three elements of the first rowprint a[0,0:3]
>>array([32,15,6]) 先固定行,在選擇對應的列區間。
本節主要介紹了NumPy的簡單操作,下一節將學習使用NumPy進行更深入的統計分析。
推薦閱讀:
※RDD論文翻譯:基於內存的集群計算容錯抽象
※陳書悅:大數據可否幫助炒股?
※零基礎學習Python數據分析:數據處理模塊Pandas使用(3)
※擁抱20餘家主機廠,彩虹無線提供車聯網全產業鏈服務
※HDFS中的Namenode和Datanode