>> import numpy as np  >>> print(np.__version__)  1.15.4  2.創(chuàng)建一維(或多維)數(shù)組  # 通過list初始化來創(chuàng)建..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python數(shù)據(jù)分析系列之——Numpy的使用

發(fā)布時間:2020-06-15 00:24:34 來源:網(wǎng)絡 閱讀:816 作者:nineteens 欄目:編程語言

  1.numpy的導入以及查看版本

  >>> import numpy as np

  >>> print(np.__version__)

  1.15.4

  2.創(chuàng)建一維(或多維)數(shù)組

  # 通過list初始化來創(chuàng)建

  >>> np.array([1,2,3,4,5])

  array([1, 2, 3, 4, 5])

  # 通過arange方法生成

  >>> np.arange(10)

  array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  # 指定創(chuàng)建范圍和步長

  >>> np.arange(3,10,2)

  array([3, 5, 7, 9])

  # 二維(3,3)

  >>> np.array([[1,2,3],[4,5,6],[7,8,9]])

  array([[1, 2, 3],

  [4, 5, 6],

  [7, 8, 9]])

  # 三維(2,2,2)

  >>> np.array([[[1,3],[2,4]],[[3,6],[4,8]]])

  array([[[1, 3],

  [2, 4]],

  [[3, 6],

  [4, 8]]])

  3.創(chuàng)建布爾數(shù)組

  # 一維

  >>> np.full(3, True, dtype=bool)

  array([ True, True, True])

  # 二維

  >>> np.full((3, 3), True, dtype=bool)

  array([[ True, True, True],

  [ True, True, True],

  [ True, True, True]])

  4.從數(shù)組中提取(或替換)滿足指定條件的元素

  # 提取數(shù)組中的所有奇數(shù)

  >>> arr = np.arange(10)

  >>> arr[arr % 2 == 1]

  array([1, 3, 5, 7, 9])

  # 提取大于4的數(shù)

  >>> arr[arr > 4]

  array([5, 6, 7, 8, 9])

  # 替換所有奇數(shù)為-1

  >>> arr[arr % 2 == 1] = -1

  >>> arr

  array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])

  5.改變數(shù)組的形狀

  >>> arr = np.arange(12)

  >>> arr.reshape(2,6)

  array([[ 0, 1, 2, 3, 4, 5],

  [ 6, 7, 8, 9, 10, 11]])

  # 設為-1維數(shù)會自動匹配

  >>> arr.reshape(3,-1)

  array([[ 0, 1, 2, 3],

  [ 4, 5, 6, 7],

  [ 8, 9, 10, 11]])

  >>> arr.reshape(2,2,3)

  array([[[ 0, 1, 2],

  [ 3, 4, 5]],

  [[ 6, 7, 8],

  [ 9, 10, 11]]])

  6.類型轉(zhuǎn)換

  >>> a = np.arange(10)

  >>> a.dtype

  dtype('int32')

  # 轉(zhuǎn)換為 str 類型

  >>> a.astype(str)

  array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='

  # 轉(zhuǎn)換為 float 類型

  >>> a.astype(float)

  array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

  7.垂直合并數(shù)組

  >>> a = np.arange(8).reshape(2,4)

  >>> b = np.arange(8,12)

  # 方法1

  >>> np.vstack((a, b))

  array([[ 0, 1, 2, 3],

  [ 4, 5, 6, 7],

  [ 8, 9, 10, 11]])

  # 方法2

  >>> np.row_stack((a,b))

  array([[ 0, 1, 2, 3],

  [ 4, 5, 6, 7],

  [ 8, 9, 10, 11]])

  # 方法3,注意 concatenate 垂直合并的兩個數(shù)組維數(shù)要一致

  >>> np.concatenate([a, b], axis=0)

  Traceback (most recent call last):

  File "", line 1, in

  np.concatenate([a, b], axis=0)

  ValueError: all the input arrays must have same number of dimensions

  >>> np.concatenate([a, [b,b]], axis=0)

  array([[ 0, 1, 2, 3],

  [ 4, 5, 6, 7],

  [ 8, 9, 10, 11],

  [ 8, 9, 10, 11]])

  # 方法4,合并的兩個數(shù)組維數(shù)要一致

  >>> np.r_[a,[b,b]]

  array([[ 0, 1, 2, 3],

  [ 4, 5, 6, 7],

  [ 8, 9, 10, 11],

  [ 8, 9, 10, 11]])

  8.水平合并數(shù)組

  >>> a = np.arange(8).reshape(2,4)

  >>> b = np.arange(8,12).reshape(2,2)

  # 方法1

  >>> np.hstack((a,b))

  array([[ 0, 1, 2, 3, 8, 9],

  [ 4, 5, 6, 7, 10, 11]])

  # 方法2

  >>> np.column_stack((a,b))

  array([[ 0, 1, 2, 3, 8, 9],

  [ 4, 5, 6, 7, 10, 11]])

  # 方法3

  >>> np.concatenate([a, b], axis=1)

  array([[ 0, 1, 2, 3, 8, 9],

  [ 4, 5, 6, 7, 10, 11]])

  # 方法4

  >>> np.c_[a,b]

  array([[ 0, 1, 2, 3, 8, 9],

  [ 4, 5, 6, 7, 10, 11]])

  9.保存和讀取txt(或csv)

  >>> filename = 'data.txt' # or filename = 'data.csv'

  >>> a = np.arange(12).reshape(3,4)

  # 保存:fmt 指定保存的數(shù)據(jù)類型,delimiter 指定分隔符

  >>> np.savetxt(filename, a, fmt='%d', delimiter=',')

  # 讀?。篸type 指定讀取后的類型,delimiter 指定分隔符

  >>> np.loadtxt(filename, dtype=float, delimiter=',')

  array([[ 0., 1., 2., 3.],

  [ 4., 5., 6., 7.],

  [ 8., 9., 10., 11.]])

  10.數(shù)組的特殊運算

  >>> a = np.arange(10)

  >>> a.sum() # 求和

  45

  >>> a.max() # 求最大值

  9

  >>> a.min() # 求最小值

  0

  >>> a.mean() # 求平均值

  4.5

  >>> a.ptp() # 求數(shù)組中元素最大值與最小值的差

  9

  >>> np.median(a) # 求數(shù)組的中位數(shù)

  4.5

  >>> np.std(a) # 求數(shù)組的標準差

  2.8722813232690143

  >>> np.var(a) # 求數(shù)組的方差

  8.25

  >>> a ** 2 # a中每個數(shù)平方

  array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype=int32)

  >>> a.dot(a) # 點積運算,對應元素相乘后求和,返回一個標量

  285

  >>> a.dot(a.T) # a.T是a的轉(zhuǎn)置,也可以用 a.transpose()

  285

  11.創(chuàng)建零矩陣、1矩陣、單位陣

  >>> np.zeros((2, 3)) # 零矩陣

  array([[0., 0., 0.],

  [0., 0., 0.]])

  >>> np.ones((4, 3)) # 1矩陣

  array([[1., 1., 1.],

  [1., 1., 1.],

  [1., 1., 1.],

  [1., 1., 1.]])

  >>> np.identity(3) # 單位陣,也可以用 np.eye(3)

  array([[1., 0., 0.],

  [0., 1., 0.],

  [0., 0., 1.]])

  12.矩陣的特殊運算

  (1)array內(nèi)積運算np.dot()

  # 一維內(nèi)積,對應元素相乘后求和

  >>> A=np.array([1, 2, 3])

  >>> B=np.array([4, 5, 6])

  >>> A.dot(B) # or A.dot(B.T)

  32?無錫×××醫(yī)院 https://yyk.familydoctor.com.cn/20612/

  # 二維內(nèi)積,矩陣A[m,n]的列數(shù)等于矩陣B[n,p]的行數(shù),與線性代數(shù)的矩陣乘法相同(C[i,j] = sum(A[i,k] * B[k,i]), k in [i,n])

  # 假設C=A·B,則C[1,1] = A[1,1]*B[1,1] + A[1,2]*B[2,1] + A[1,3]*B[3,1] = 1*2 + 2*2 + 3*2 = 12

  >>> A=np.array([[1, 2, 3], [4, 5, 6]]) # (2, 3)

  >>> B=np.array([[2, 3], [2, 3], [2, 3]]) # (3, 2)

  >>> A.dot(B) # or np.dot(A, B)

  array([[12, 18],

  [30, 45]])

  (2)array元素乘法運算np.multiply()

  # 元素的乘法運算是矩陣指對應元素相乘,可以用np.multiply(),也可以直接寫" * "運算符

  # 元素的乘法運算要求兩個矩陣的維數(shù)必須要一致

  # 一維數(shù)組

  >>> A=np.array([1, 2, 3])

  >>> B=np.array([4, 5, 6])

  >>> A * B

  array([ 4, 10, 18])

  >>> np.multiply(A, B)

  array([ 4, 10, 18])

  # 二維數(shù)組

  >>> A = np.arange(8)

  >>> A = A.reshape(2,4)

  >>> A

  array([[0, 1, 2, 3],

  [4, 5, 6, 7]])

  >>> A * A

  array([[ 0, 1, 4, 9],

  [16, 25, 36, 49]])

  >>> np.multiply(A, A)

  array([[ 0, 1, 4, 9],

  [16, 25, 36, 49]])

  (3)matrix乘法運算

  # matrix乘法運算可使用np.matmul(),也可使用" * "運算符

  # matrix乘法運算與array的二維內(nèi)積相同,所以也可以用np.dot()

  >>> MA = np.matrix([[1, 2, 3], [4, 5, 6]])

  >>> MB = np.matrix([[2, 3], [2, 3], [2, 3]])

  >>> MA

  matrix([[1, 2, 3],

  [4, 5, 6]])

  >>> MB

  matrix([[2, 3],

  [2, 3],

  [2, 3]])

  >>> MA * MB

  matrix([[12, 18],

  [30, 45]])

  >>> np.matmul(MA, MB) # or np.dot(MA, MB), MA.dot(MB)

  matrix([[12, 18],

  [30, 45]])

  (4)笛卡爾積運算

  # 笛卡爾積也稱為直積,其實就是集合的映射關(guān)系,可以用itertools.product()來實現(xiàn)

  # 比如A={a, b},B={1,2,3},則A和B的笛卡爾積為{(a,1), (a,2), (a,3), (b,1), (b,2), (b,3)}

  >>> import itertools

  >>> A = np.array(['a', 'b'])

  >>> B = np.array([1, 2, 3])

  >>> D = itertools.product(A, B)

  >>> list(D) # 直接轉(zhuǎn)list,list中每個元素為tuple類型

  [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]

  # 也可以通過循環(huán)來遍歷D

  >>> for d in D:

  print(d)

  ('a', 1)

  ('a', 2)

  ('a', 3)

  ('b', 1)

  ('b', 2)

  ('b', 3)

  待更新:

  python數(shù)據(jù)分析系列(二)——Matplotlib的使用

  python數(shù)據(jù)分析系列(三)——Scipy的使用


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI