數據科學包——初識numpy(創建、屬性、運算)

一、Numpy簡介

  • Numpy是Python語言的一個library numpy
  • Numpy主要支持矩陣操作和運算
  • 現在比較流行的機器學習框架(例如Tensorflow/PyTorch等等),語法都與Numpy比較接近

二、numpy創建數組

1.dtype定義格式

import numpy as np
a=np.array([2,3,4],dtype=np.int64)
print(a.dtype)
>>>
int64

2.定義矩陣

  • array函數
a=np.array([2,3,4],
		   [2,3,4])
  • zero函數
a=np.zero((3,4)) #三行四列零矩陣
  • ones函數
a=np.ones() #所有元素都是1的矩陣
  • arange函數
a=np.arange(10,20,2) #以10起始,到20終止(不包括20),以2爲步長的數組
>>>
[10 12 14 16 18]
  • reshape函數
a=np.arange(12).reshape((3,4)) #一行十二列,重置格式爲三行四列
  • linspace函數:
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
作用爲:在指定的大間隔內,返回固定間隔的數據。他將返回“num”個等間距的樣本,在區間[start, stop]中。其中,區間的結束端點可以被排除在外。

a=np.linspace(1,10,4) 
>>>
[ 1.  4.  7. 10.]

三、numpy屬性

1.創建一個數組

import numpy as np
array=np.array([[1,2,3],[2,3,4]])
print(array)
>>>
[[1 2 3]
 [2 3 4]]

2.查看數組維度

ndim返回的是數組的維度,返回的只有一個數,該數即表示數組的維度。

print('number of dim:',array.ndim)
>>>
number of dim: 2

3.查看數組類型

print('shape:',array.shape)
>>>
shape: (2, 3)

4.查看數組元素個數

print('size:',array.size)
>>>
size: 6

四、numpy基礎運算

1.數組的加減冪乘

1.1 加減冪

  • 加減
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a)
print(b)
c = a + b
d= a-b
# c = b ** 2  # b的平方
print(c)
print(d)

對應位置相加減

[10 20 30 40]
[0 1 2 3]
[10 21 32 43]
[10 19 28 37]
  • 冪和三角函數
e=b**2 #b數組的每一個元素求平方
f=10*np.sin(a) #a數組每一個元素的sin函數
>>>
[0 1 4 9]
[-5.44021111  9.12945251 -9.88031624  7.4511316 ]

1.2 乘法

  • 對應想乘:c=a*b
print(c)
>>>
[  0  20  60 120]
  • 矩陣的乘法:兩種表達方式結果一樣
    (1)c_dot=np.dot(a,b)
a=np.array([[2,4],[2,4]])
print(a)
b=np.array([[2,2],[2,2]])
c_dot=np.dot(a,b)
print(c_dot)
>>>
[[2 4]
 [2 4]]
[[12 12]
 [12 12]]

(2)c_dot=a.dot(b)

c_dot=a.dot(b)
print(c)
>>>
[[12 12]
 [12 12]]

2.統計數學運算

a=np.array([[2,4],[2,4]])
np.sum(a) #所有數字的和
np.min(a) #找到最小值
np.max(a) #找到最大值
np.mean(a,axis=0)#對於列進行計算平均值 
>>>
12
2
4
[2. 4.]

a=np.array([[4,2],[3,4]])
print(np.median(a,axis=0)) #對於列取中位數
>>>
[3.5 3. ]
  • 按行、列求和
a=np.array([[2,4],[2,4]])
np.sum(a,axis=1)#行求和,axis=0是列
>>>
[6 6]

3.其他基礎運算

3.1 arg***函數

numpy.argmin(a,axis=None,out=None)[source]

給出axis方向最小值的下標

  • 參數:
    a:Input array.
    axis:默認將輸入數組展平。否則,按照axis方向
    out:可選
  • 返回值
    index_array:下標組成的數組。shape與輸入數組a去掉axis的維度相同。
    注:多個最小值,只顯示第一個

試驗:

import numpy as np
a=np.array([[4,2],
			[0,4]])
print(np.argmin(a)) #對於列進行計算平均值
>>>
2

鋪平之後‘0’所在位置就是2

除了argmin還有argmax/argmean/argmedian

3.2 cumsum函數

  • 定義:
cumsum(a, axis=None, dtype=None, out=None)   
a.cumsum(axis=None, dtype=None, out=None)
  • 返回:沿着指定軸的元素累加和所組成的數組,若不指定方向,返回一維數組
  • 參數:
    a:數組axis:軸索引,整型,若a爲n維數組,則axis的取值範圍爲[0,n-1]
    dtype:返回結果的數據類型,若不指定,則默認與a一致。
    out:數據類型爲數組。用來放置結果的替代輸出數組,它必須具有與輸出結果具有相同的形狀和緩衝長度代碼示例:

試驗

import numpy as np
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
#沿着axis=0軸計算
result1=arr.cumsum(0)
print(result1)
>>>
[[ 1  2  3]
 [ 5  7  9]
 [12 15 18]]

3.3 diff函數

  • 定義
numpy.diff(a, n=1,axis=-1)

沿着指定軸計算第N維的離散差值 ,就是n位元素n+1位元素

  • 參數:
    a:輸入矩陣
    n:可選,代表要執行幾次差值,默認一次
    axis:默認是最後一個
    試驗
import numpy as np
a= np.arange(0,12).reshape((3,4))
result=np.diff(a)
print(result)
>>>
[[1 1 1]
 [1 1 1]
 [1 1 1]]

3.4 nonzero函數

返回的是數組中,非零元素的位置。如果是二維數組就是描述非零元素在幾行幾列,三維數組則是描述非零元素在第幾組中的第幾行第幾列。
試驗

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result=np.nonzero(a)
print(result)
>>>
(array([0, 0, 0, 1, 1, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 0, 2], dtype=int64))

第一個array描述行,第二個array描述列,我們把結果轉變下以便理解:
array([0, 0, 0, 1, 1, 2, 2]
array([0, 1, 2, 0, 1, 0, 2]
非零元素位置:(0,0)(0,1)(0,2)…

3.5 轉置:T、transpose函數

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 0], [6, 0, 7]])
result1=a.T
result2=np.transpose(a)
print(result1)
print(result2)
>>>
[[1 4 6]
 [2 5 0]
 [3 0 7]]
[[1 4 6]
 [2 5 0]
 [3 0 7]]

3.6 sort函數

numpy.sort() 函數返回輸入數組的排序副本。

  • 格式
numpy.sort(a, axis, kind, order)
  • 參數
    a: 要排序的數組
    axis: 沿着它排序數組的軸,如果沒有數組會被展開,沿着最後的軸排序, axis=0 按列排序,axis=1 按行排序
    kind: 默認爲’quicksort’(快速排序)
    order: 如果數組包含字段,則是要排序的字段

試驗

import numpy as np
a = np.array([[8, 2, 3], [4, 5, 2], [6, 9, 7]])
print (np.sort(a))
print (np.sort(a,axis=0))
>>>
[[2 3 8]
 [2 4 5]
 [6 7 9]]
[[4 2 2]
 [6 5 3]
 [8 9 7]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章