零基礎學習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.htmls3.amazonaws.com

import 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

TAG:商業分析 | 大數據 | 數據分析 |