numpy

  numpy是機器學習裏面基礎數字算法庫,補充了python語言缺少的數字計算能力,Numpy底層由C語言實現,運行效率充分優化。2006年,Numpy脫離Scipy成爲獨立的項目。html

ndarry數組

numpy.array()  傳入數組參數,能夠是一維的也能夠是二維三維的,數組會將其轉變成ndarray結構。python

import numpy as np
a = np.array([1, 2, 3, 4])
# [1 2 3 4]
b = np.array([[1, 2, 3], [1, 2, 3]])    # 建立維度爲2的數組
# [[1 2 3]
#  [1 2 3]]
print(type(a))          # <class 'numpy.ndarray'>

ndarray.ndim  數組的維數算法

print(a.ndim)   # 1
print(b.ndim)   # 2

ndarray.size  數組的元素數量數組

print(b.size)   # 6

len(ndarray)  查看數組的第一維度數dom

print(len(b))  # 2

ndarray.dtype    查看數組元素的類型機器學習

print(type(b))      # <class 'numpy.ndarray'>
print(b.dtype)      # int32
b = a.astype("float32")
print(b.dtype)          # float32

ndarray對象屬性dtype

類型名 表示符
布爾型 bool
有符號整型 int8(-128~127)/int16/int32/int64
無符號整型 unit(-128~127)/unit16/unit32/unit64
浮點型 float16/float32/float64
複數型 complex64/complex128
字串型 str,每一個字符用32位Unicode編碼表示

假若有以下numpy數據ide

data = [('zs', [50,51,52], 15),
        ('ls', [83,71,62], 16),
        ('ww', [90,91,92], 17)]

第一種dtype的設置方式函數

ary = np.array(data,dtype='U2, 3int32, int32')
print(ary)
# [('zs', [50, 51, 52], 15) 
#  ('ls', [83, 71, 62], 16)
#  ('ww', [90, 91, 92], 17)]
print(ary[0][1])        # [50 51 52]
print(ary[0]['f0'])     # zs

第二種dtype的設置方式post

ary = np.array(data, dtype={
    'names':['name', 'scores', 'age'],
    'formats':['U2', '3int32', 'int32']})
print(ary)
# [('zs', [50, 51, 52], 15) 
#  ('ls', [83, 71, 62], 16)
#  ('ww', [90, 91, 92], 17)]
print(ary[0]['age']) # 返回zs的年齡 15
print(ary[2]['scores']) # 返回ww的成績 [90 91 92]

ndarray數組存放日期數據學習

dates = ['2011-01-01',
         '2012-01-01',
         '2011-02-01',
         '2012',
         '2011-01-01 10:10:10']
ary = np.array(dates)
print(ary.dtype)    # <U19
ary = ary.astype('M8[D]')
print(ary)
['2011-01-01' 
 '2012-01-01' 
 '2011-02-01' 
 '2012-01-01' 
 '2011-01-01']
print(ary.dtype)        # datetime64[D]
print(ary[1]-ary[0])    # 365 days

類型字符碼

類型 字符碼
np.bool ?
np.int8/16/32/64 i1/i2/i4/i8
np.unit8/16/32/64 u1/u2/u4/u8
np.float/16/32/64 f2/f4/f8
np.complex64/128 c8/c16
np.str U<字符數>
np.datetime64 M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]

字節序前綴,用於多字節整型和字符串:<小端;>大端;[=]硬件字節序

類型字符碼格式<字節序前綴><維度><類型><字節數或字符數>

例如:

3i4:3個元素,整型,每一個元素佔4個字節

<(2,3)u8:小端字節序,2行3列的二維數組,無符號整型,每一個元素佔8字節

U7:7個字符的Unicode字符串,每一個字符佔4個字節,採用默認字節序。

維度操做

視圖變維(數據共享):reshape()ravel()

import numpy as np
a = np.arange(1, 9)     # [1 2 3 4 5 6 7 8]
b = a.reshape(2, 4)     # 視圖變維    變爲2行4列的二維數組
c = b.reshape(2, 2, 2)  # 視圖變維    變爲2頁2行2列的三維數組
d = c.ravel()           # 視圖變維   變爲1維數組

複製變維(數據獨立)flatten()

print(c.shape)      # (2, 2, 2)
e = c.flatten()     # 壓縮成一維數組
print(e.shape)      # (8,)

就地變維:直接改變原數組對象的維度,不返回新數組

import numpy as np
a = np.arange(1, 9)
print(a.shape)      # (8,)
a.shape = (2, 4)
print(a.shape)      # (2, 4)
a.resize(2, 2, 2)
print(a.shape)      # (2, 2, 2)

切片索引

一維切片索引

vector = numpy.array([5, 10, 15, 20])
print(vector[0:3])  # 切片索引取值# [ 5 10 15]

利用返回值獲取元素

import numpy
vector = numpy.array([5, 10, 15, 20])
print(vector == 10)   # [False  True False False]
# 利用返回值獲取元素
print(vector[vector == 10])# [10]

二維切片索引

多維的切片是按照各個維度分別取的

import numpy as np 

a = np.arange(25).reshape(5, 5)
print(a)
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]
#  [20 21 22 23 24]]

# 取第一、2行,第二、三、4列
print(a[1:3, 2:5])        # 多維的切片是按照各個維度分別取
print(a[:, 2:5])          # 行取所有,列取第3-5

有時候將一個切片索引的參數改爲None,那麼ndarray的shape會變

print(a[:, None].shape)            # (5, 1, 5)

None表明新增長一個維度,它有一個別稱叫作newaxis,由於在第二維上用了None,因此數組的shape變成了(5, 1, 5)

咱們在第三個維度上看看,shape會變成什麼樣子。

print(a[:, :, None].shape)        # (5, 5, 1)

有時候數組的一個維度上是三個點,它是用省略號代替全部冒號a[:, :, None]和a[…, None]的輸出是同樣的,就是由於…代替了前面兩個冒號

print(a[..., None].shape)        # (5, 5, 1)
print(a[:, :, None].shape)        # (5, 5, 1)

數組掩碼

import numpy as np

# 輸出10之內3的倍數
a = np.arange(1, 10)
mask = a % 3 == 0
print(mask) # [False False  True False False  True False False  True]
print(a[mask])  # [3 6 9]

mask = [2, 2, 6, 6, 4, 4]
print(a)        # [1 2 3 4 5 6 7 8 9]
print(a[mask])  # [3 3 7 7 5 5]

建立數組的經常使用函數

arange 指定範圍和數值間的間隔array,np.arange(起始值,終止值,步長),取值範圍左閉右開。

np.arange(0, 10, 2)
# [0, 2, 4, 6, 8, 10]

reshape  生成0-14的15個數字,使用reshape(3,5)將其構形成一個三行五列的array

arr = np.arange(15).reshape(3, 5)

# array([[0, 1, 2, 3, 4],
#        [5, 6, 7, 8, 9],
#        [10, 11, 12, 13, 14]]) 

squeeze函數 把shape中爲1的維度去掉

arr = arr.reshape(1,1,-1)
print(arr)                # [[[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]]]

print(np.squeeze(arr))    # [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
print(np.squeeze(arr).shape)    # (15,)

zero:生成指定結構的默認爲0.的array

a = np.zeros((3,4))

# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

ones:生成一個三維的array,經過dtype指定類型

a = np.ones((2, 3, 4), dtype=np.int32)  # 3行4列2層

# [[[1 1 1 1]
#   [1 1 1 1]
#   [1 1 1 1]]
# 
#  [[1 1 1 1]
#   [1 1 1 1]
#   [1 1 1 1]]]

numpy.zeros_like()

創造相同結構的全零數組

ary = np.array([1, 2, 3, 4, 5])
print(np.zeros_like(ary))   # [0 0 0 0 0]

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

在指定間隔[start, stop]之間返回均勻num個數字,若是endpoint是True,則不會取最後一個端點stop

np.linspace(2.0, 3.0, num=5)
# array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
np.linspace(2.0, 3.0, num=5, endpoint=False)
# array([ 2. ,  2.2,  2.4,  2.6,  2.8])

向下取整np.floor()和向下取整np.ceil()

a = np.random.random((2,2))
# [[0.74892422 0.7665049 ]
#  [0.29296727 0.74230182]]
b = np.floor(10*a)
# [[7. 7.]
#  [2. 7.]]
b = np.ceil(a)
# [[1. 1.]
#  [1. 1.]]

a.T  轉置(行列變換)

a = np.array([[1,2],[3,4]])
print(a.T)# 轉置
# [[1 3]
#  [2 4]]

a.resize(1,4)  變換結構,和reshape類似

a = np.array([[1,2],[3,4]])
a.resize(1,4)
print(a)    # array([[1, 2, 3, 4]])

numpy.clip(a, a_min, a_max, out=None)

把數組a中小於a_min的值都化爲a_min,大於a_max的值都化爲a_max

import numpy as np

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

print(np.clip(x,3,8))
# [3 3 3 5 6 7 8 8]

pad函數的用法

ndarray = numpy.pad(array, pad_width, mode, **kwargs)

參數:

  • array爲要填補的數組
  • pad_width是在各維度的各個方向上想要填補的長度,如((1, 1),(2, 2)),表示:在二維數組array第一維(即行)前面填充1行,最後一行填充1行;在二維數組array第二維(即列)前面填充2列,最後面填充2列。
  • 若是直接輸入一個整數,則說明各個維度和各個方向所填補的長度都同樣。
  • mode爲填補類型,即怎樣去填補,有「constant」,「edge」等模式,若是爲constant模式,就得指定填補的值,若是不指定,則默認填充0。

對一維數組填充

import numpy as np
array = np.array([1, 1])

# (1,2)表示在一維數組array前面填充1位,最後面填充2位
#  constant_values=(0,2) 表示前面填充0,後面填充2
ndarray=np.pad(array,(1,2),'constant', constant_values=(0,2)) 

print(array)        # [1 1]
print(ndarray)        # [0 1 1 2 2]

對二維數組填充

import numpy as np
array = np.array([[1, 1],[2,2]])
"""
((1,1),(2,2))
在二維數組array第一維(此處即是行)前面填充1行,最後面填充1行;
在二維數組array第二維(此處即是列)前面填充2列,最後面填充2列
constant_values=(0,3) 表示第一維填充0,第二維填充3
"""
ndarray=np.pad(array,((1,1),(2,2)),'constant', constant_values=(0,3)) 

print(array)
# [[1 1]
#  [2 2]]

print(ndarray)
# [[0 0 0 0 3 3]
#  [0 0 1 1 3 3]
#  [0 0 2 2 3 3]
#  [0 0 3 3 3 3]]

數組的組合與拆分

np.hstack(a,b)  橫向拼接

import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
# 水平方向完成組合操做,生成新數組
c = np.hstack((a, b))       # (2, 6)

np.vstack(a,b)  縱向拼接

import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
# 垂直方向完成組合操做,生成新數組
c = np.vstack((a, b))       # (4, 3)

np.hsplit(a,2)  矩陣橫向切割  把a橫 豎切成2分

# a.shape (2, 6)
# 水平方向完成拆分操做,生成兩個數組
d, e = np.hsplit(c, 2)
# d.shape      (2, 3)
# e.shape      (2, 3)

np.vsplit(a,2)  矩陣縱向切割  把a縱 橫切2分

# a.shape (4,3)
# 垂直方向完成拆分操做,生成兩個數組
d, e = np.vsplit(a, 2)
# d.shape   (2, 3)
# e.shape   (2, 3)

深度方向(3維)

import numpy as np
a = np.arange(1, 7).reshape(2, 3)
b = np.arange(7, 13).reshape(2, 3)
# 深度方向(3維)完成組合操做,生成新數組
i = np.dstack((a, b))   # (2, 3, 2)
print(i.shape)
# 深度方向(3維)完成拆分操做,生成兩個數組
k, l = np.dsplit(i, 2)
# k.shape  # (2, 3, 1)
# l.shape  # (2, 3, 1)

經過axis方法進行數組拼接

axis的取值

  • 0: 第一個維度方向,垂直方向
  • 1: 第二個維度方向,水平方向
  • 2: 第三個維度方向

numpy.concatenate((a1, a2, ...), axis=0)

import numpy as np

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

c=np.concatenate((a, b), axis=0)        # (3, 2)
d=np.concatenate((a, b.T), axis=1)        # (2, 3)

拆分,axis的取值同上
np.split(c, 2, axis=0)

注意:拼接的數組,除了須要拼接的維度能夠不一樣,其餘維度必須相同。

例如,a.shape爲(4,5,6,10),b.shape爲(4,5,6,20)

np.concatenate([a,b], axis=3) # 返回張量的shape爲(4,5,6,30)

矩陣運算

column是列,row是行。

相加、相減、開根號、e平方、取log對數

a = np.array([10,20,30,40])
b = np.array(4)

print(np.abs(-b))    # 取絕對值
print(a - b)    # array([ 6, 16, 26, 36])

# 取平方
print(a**2) # array([ 100,  400,  900, 1600])
print(np.square(a))

# 開根號
print(np.sqrt(a**2))   # [10. 20. 30. 40.]

# 以e爲底的對數
print(np.exp(a))    # [2.20264658e+04 4.85165195e+08 1.06864746e+13 2.35385267e+17]

# 以e爲底的對數
print(np.log(a))    # [2.30258509 2.99573227 3.40119738 3.68887945]
# 以10爲底的對數
print(np.log10(a))  # [1.         1.30103    1.47712125 1.60205999]

求和

matrix = numpy.array([[1,2,3],
                      [4,5,6],
                     [7,8,9]])
print(matrix.sum())# 45
print(matrix.sum(1))# 按每行求和 # [ 6 15 24]
print(matrix.sum(0))# 按每列求和 # [12 15 18]

sum(1) 是 sum(axis=1)) 的縮寫,1表示按照 x軸方向求和,0表示按照y軸方向求和

矩陣乘法

A*B  A.dot(B)  np.dot(A,B)

import numpy as np
A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A*B)

print(A.dot(B))    # A*B
print(np.dot(A,B))  # A*B
# [[2 0]
#  [0 4]]

矩陣求均值  

numpy.mean(a, axis, dtype, out,keepdims )

mean()函數功能:求取均值 
常常操做的參數爲axis,以m * n矩陣舉例:

  • axis 不設置值,對 m*n 個數求均值,返回一個實數
  • axis = 0:壓縮行,垂直方向,對各列求均值,返回 1* n 矩陣
  • axis =1 :壓縮列,水平方向,對各行求均值,返回 m *1 矩陣
a = np.array([[1, 2], [3, 4]])
print(a)
# array([[1, 2],
#        [3, 4]])
print(np.mean(a))   # 2.5
print(np.mean(a, axis=0))  # axis=0,計算每一列的均值
# array([ 2.,  3.])
print(np.mean(a, axis=1))  # 計算每一行的均值 
# array([ 1.5,  3.5])

numpy的函數有兩種用法,以mean爲例,第一a=np.mean(array);第二a=array.mean()

np.max() np.min() np.ptp(): 返回一個數組中最大值/最小值/極差

np.argmax() np.argmin(): 返回一個數組中最大/最小元素的下標

np.maximum() np.minimum(): 將兩個同維數組中對應元素中最大/最小元素構成一個新的數組

np.median(array)  中位數,若是爲偶數,返回中間兩個元素的平均值。

np.std(array)   標準差

 

複製的區別

地址複製:經過 b = a 複製 a 的值,b 與 a 指向同一地址,改變 b 同時也改變 a。

 1 a = np.arange(12)
 2 b = a
 3 print(a is b)
 4  
 5 print(a.shape)
 6 print(b.shape)
 7 b.shape = (3,4)
 8 print(a.shape)
 9 print(b.shape)
10  
11 # True
12 # (12,)
13 # (12,)
14 # (3, 4)
15 # (3, 4)
View Code

複製值:經過 a.view() 僅複製值,當對 c 值進行改變會改變 a 的對應的值,而改變 c 的 shape 不改變 a 的 shape,只有值會變,矩陣結構不變

 1 a = np.arange(12)# [ 0  1  2  3  4  5  6  7  8  9 10 11]
 2 c = a.view()
 3 print(c is a)
 4 
 5 c.shape = (2,6)
 6 c[0,0] = 9999
 7  
 8 print(a)
 9 print(c)
10  
11 # False
12 # [9999    1    2    3    4    5    6    7    8    9   10   11]
13 # [[9999    1    2    3    4    5]
14 # [   6    7    8    9   10   11]]
View Code

徹底拷貝:a.copy() 進行的完整的拷貝,產生一份徹底相同的獨立的複製

 1 a = np.arange(12)
 2 c = a.copy()
 3 print(c is a)
 4  
 5 c.shape = 2,6
 6 c[0,0] = 9999
 7  
 8 print(a)
 9 print(c)
10  
11 # False
12 # [ 0  1  2  3  4  5  6  7  8  9 10 11]
13 # [[9999    1    2    3    4    5]
14 # [   6    7    8    9   10   11]]
View Code

numpy.random 隨機模塊

numpy的random模塊用於生成隨機數,

numpy.random.random(D0, d1,....dN)  

生成[0, 1)之間指定結構的隨機數

np.random.random((2, 3))

# [[ 0.86166627,  0.37756207,  0.94265883],
#  [ 0.9768257 ,  0.96915312,  0.33495431]]

numpy.random.rand(D0d1...DN)

給定形狀的數組,並在[0,1)之間

np.random.rand(3,2)
# array([[ 0.14022471,  0.96360618],  #random
#        [ 0.37601032,  0.25528411],  #random
#        [ 0.49313049,  0.94909878]]) #random

numpy.random.randn(D0d1...DN)

從「標準正態分佈」返回一個或多個樣本

a = np.random.randn(2, 4)
# [[-0.9115162  -1.32887292 -1.02910152  0.8023337 ]
#  [-1.14456771 -0.53251834 -1.75465906 -1.25668335]]

numpy.random.normal(loc = 0.0,scale = 1.0,size = None)

從正態分佈中中抽取隨機樣本,其中均值爲loc,方差爲scale,size是形狀

s = np.random.normal(0,1, 1000)
print(s.shape)  # (1000,)

numpy.random.randint(low, high=None, size=None, dtype='l')

生成[low,high)的隨機整數,取數範圍:若high不爲None時,取[low,high)之間隨機整數,不然取值[0,low)之間隨機整數。

a = np.random.randint(5, size=(2, 4))
# array([[4, 0, 2, 1],
#        [3, 2, 2, 0]])

b = np.random.randint(5,10,size=(2, 4))
# [[6 9 8 5]
#  [8 8 6 8]]

numpy.random.uniform(low=0.0, high=1.0, size=None)

功能:從一個均勻分佈[low,high)中隨機採樣,注意定義域是左閉右開,即包含low,不包含high.

參數: 

  • low: 採樣下界,float類型,默認值爲0;
  • high: 採樣上界,float類型,默認值爲1;
  • size: 輸出樣本數目,爲int或元組(tuple)類型,例如,size=(m,n,k), 則輸出m*n*k個樣本,缺省時輸出1個值。

numpy.random.choice(a, size=None, replace=True, p=None)

從序列中獲取元素,若a爲整數,元素取值爲np.range(a)中隨機數;若a爲數組,取值爲a數組元素中隨機元素。

 

  • size:表示從a中隨機選取size個數
  • replace: 抽樣以後是否放回,False不放回抽樣,True放回抽樣。
  • p:表示每一個元素被抽取的機率,若是沒有指定,a中全部元素被選取的機率是相等的。

 

numpy.random.shuffle(x)

對X進行重排序,若是X爲多維數組,只沿第一條軸洗牌(橫軸),輸出爲None。

arr = np.arange(9).reshape((3, 3))
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
np.random.shuffle(arr)
# [[3 4 5]
#  [0 1 2]
#  [6 7 8]]

numpy.random.seed(seed=None)    # 種下隨機種子,使得生成的隨機數相同

讀取文件

numpy.gerfromtxt()用於讀取文件,其中傳入的參數依次是:

  一、須要讀取txt文件位置,此處文件與程序位於同一目錄下

  二、delimiter 分割的標記

  三、dtype 轉換類型,若是文件中既有文本類型也有數字類型,就先轉成文本類型

import numpy
 
world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",",dtype=str)
print(type(world_alcohol))
print(world_alcohol)
print(help(numpy.genfromtxt))

help(numpy.genformtxt)用於查看幫助文檔

np.loadtxt("path", delimiter=",", usecols=(1, 3), unpack=False, dtype='u10, f8', converters={1:func})

參數:

  • "path":讀取csv文件路徑
  • '../aapl.csv':文件路徑
  • delimiter=',':分隔符
  • usecols=(1, 3):讀取一、3兩列 (下標從0開始)
  • unpack=False:是否按列拆包
  • dtype='U10, f8':制定返回每一列數組中元素的類型
  • converters={1:func} :轉換器函數字典
import numpy as np
import datetime as dt
# 日期轉換函數
def dmy2ymd(dmy):
    # 把「日月年」字符串轉換成「年月日」字符串
    dmy = str(dmy, encoding='utf-8')
    time = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
    t = time.strftime('%Y-%m-%d')
    return t
dates, opening_prices,highest_prices, lowest_prices, closeing_prices  = np.loadtxt(
    './aapl.csv',     # 文件路徑
    delimiter=',',          # 分隔符
    usecols=(1, 3, 4, 5, 6),            # 讀取一、三、四、五、6兩列 (下標從0開始)
    unpack=True,
    dtype='M8[D], f8, f8, f8, f8',      # 制定返回每一列數組中元素的類型
    converters={1:dmy2ymd})

print(dates)
# 表格中數據 28-01-2011
# 轉換後數據 2011-01-28

若是不設置dtype,t=time.strtime()換成t=time.weekday()獲得的結果是[4. 0. 1. 2. 3. 4. 0. 1.]

卷積

a = [1 2 3 4 5]  原數組
b = [8 7 6]    卷積核數組 kernel

使用b做爲卷積覈對a數組作一維卷積運算的過程以下:

           44 65 86 有效卷積 (valid) 23 44 65 86 59 同維卷積 (same) 8 23 44 65 86 59 30 徹底卷積 (full)
0  0  1  2  3  4  5  0  0
6  7  8
   6  7  8
      6  7  8
         6  7  8
            6  7  8
               6  7  8
                  6  7  8

c = np.convolve(a, b, '卷積類型')

使用卷積函數numpy.convolve(a, b, 卷積類型)實現5日均線

sma52 = np.convolve( closing_prices, np.ones(5) / 5, 'valid')
mp.plot(dates[4:], sma52, c='limegreen', alpha=0.5, linewidth=6, label='SMA-5(2)')

加權卷積

使用卷積函數numpy.convolve(a, b, 卷積類型)實現加權5日均線

# 實現加權卷積
# 經過指數函數,尋求一組卷積核 
kernel = np.exp(np.linspace(-1, 0, 5))
kernel = kernel[::-1]
kernel /= kernel.sum()
print(kernel)
sma53 = np.convolve(closing_prices, kernel, 'valid')
mp.plot(dates[4:], sma53, label='SMA-5(3)', linewidth=1, color='violet', linestyle='-')

時間數據處理

import numpy as np
import datetime as dt

# 轉換器函數:將日-月-年格式的日期字符串轉換爲星期
def dmy2wdays(dmy):
    dmy = str(dmy, encoding='utf-8')
    d = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
    wday = d.weekday()
    return wday


# 加載文件,第一列 wdays時間數據
wdays, closing_prices = np.loadtxt('./aapl.csv', delimiter=',', usecols=(1), unpack=True, converters={1: dmy2wdays})
print(wdays)
# [4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4. 1. 2. 3. 4. 0. 1. 2. 3. 4. 0. 1. 2. 3. 4.]

日月年轉年月日

def dmy2ymd(dmy):
    # 把日月年字符串轉爲年月日字符串
    print(dmy)      # b'11-03-2011'
    dmy = str(dmy, encoding='utf-8')
    d = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
    ymd = d.strftime('%Y-%m-%d')
    print(ymd)      # 2011-03-11
    return ymd

 

參考文獻

參考博客

NumPy官方文檔

CSDN博客Numpy之random學習

numpy中pad函數的經常使用方法

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息