Python?Numpy庫的超詳細(xì)教程
1、Numpy概述
1.1 概念
Python本身含有列表和數(shù)組,但對(duì)于大數(shù)據(jù)來說,這些結(jié)構(gòu)是有很多不足的。由于列表的元素可以是任何對(duì)象,因此列表中所保存的是對(duì)象的指針。對(duì)于數(shù)值運(yùn)算來說這種 結(jié)構(gòu)比較浪費(fèi)內(nèi)存和CPU資源。至于數(shù)組對(duì)象,它可以直接保存 數(shù)值,和C語言的一維數(shù)組比較類似。但是由于它不支持多維,在上面的函數(shù)也不多,因此也不適合做數(shù)值運(yùn)算。Numpy提供了兩種基本的對(duì)象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)。
1.2 功能
- 創(chuàng)建n維數(shù)組(矩陣)
- 對(duì)數(shù)組進(jìn)行函數(shù)運(yùn)算,使用函數(shù)計(jì)算十分快速,節(jié)省了大量的時(shí)間,且不需要編寫循環(huán),十分方便
- 數(shù)值積分、線性代數(shù)運(yùn)算、傅里葉變換
- ndarray快速節(jié)省空間的多維數(shù)組,提供數(shù)組化的算術(shù)運(yùn)算和高級(jí)的 廣播功能。
1.3 對(duì)象
- NumPy中的核心對(duì)象是ndarray
- ndarray可以看成數(shù)組,存放同類元素
- NumPy里面所有的函數(shù)都是圍繞ndarray展開的
ndarray 內(nèi)部由以下內(nèi)容組成:
• 一個(gè)指向數(shù)據(jù)(內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù))的指針。
• 數(shù)據(jù)類型或 dtype,描述在數(shù)組中的固定大小值的格子。
• 一個(gè)表示數(shù)組形狀(shape)的元組,表示各維度大小的元組。形狀為(row×col)
1.4 數(shù)據(jù)類型
numpy 支持的數(shù)據(jù)類型比 Python 內(nèi)置的類型要多很多,基本上可以和C語言的數(shù)據(jù)類型對(duì)應(yīng)上主要包括int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64
1.5 數(shù)組屬性
屬性 | 說明 |
---|---|
ndarray.ndim | 秩,即軸的數(shù)量或維度的數(shù)量 |
ndarray.shape | 數(shù)組的維度(n×m),對(duì)于矩陣,n 行 m 列 |
ndarray.size | 數(shù)組元素的總個(gè)數(shù),相當(dāng)于 .shape 中 n*m 的值 |
ndarray.dtype | ndarray 對(duì)象的元素類型 |
ndarray.itemsize | ndarray 對(duì)象中每個(gè)元素的大小,以字節(jié)為單位 |
ndarray.flags | ndarray 對(duì)象的內(nèi)存信息 |
ndarray.real | ndarray元素的實(shí)部 |
ndarray.imag | ndarray元素的虛部 |
ndarray.data | 包含實(shí)際數(shù)組元素的緩沖區(qū),由于一般通過數(shù)組的索引獲取元素,所以通常不需要使用這個(gè)屬性。 |
2、Numpy數(shù)組操作
2.1 Numpy創(chuàng)建
2.1.1 利用列表生成數(shù)組
import numpy as np lst = [1, 2, 3, 4] nd1 = np.array(lst) print(nd1, type(nd1)) #[1 2 3 4] <class 'numpy.ndarray'>
2.1.2 利用random模塊生成數(shù)組
下面是random模塊的一些常用函數(shù)
::: hljs-center
使用如下:
import numpy as np #0到1標(biāo)準(zhǔn)正態(tài)分布 arr1 = np.random.randn(3, 3) #0到1均勻分布 arr2 = np.random.rand(3, 3) #均勻分布的隨機(jī)數(shù)(浮點(diǎn)數(shù)),前兩個(gè)參數(shù)表示隨機(jī)數(shù)的范圍,第三個(gè)表示生成隨機(jī)數(shù)的個(gè)數(shù) arr3 = np.random.uniform(0, 10, 2) #均勻分布的隨機(jī)數(shù)(整數(shù)),前兩個(gè)參數(shù)表示隨機(jī)數(shù)的范圍,第三個(gè)表示生成隨機(jī)數(shù)的個(gè)數(shù) arr4 = np.random.randint(0, 10, 3) print(f'arr1 : {arr1}\narr2 : {arr2}\narr3 : {arr3}\narr4 : {arr4}') out : # arr1 : [[-0.31637952 -0.08258995 1.43866984] # [-0.11216775 0.43881134 0.11745847] # [-1.1770306 -0.97657465 2.2368878 ]] # arr2 : [[0.16350611 0.4467384 0.9465067 ] # [0.1882318 0.40261184 0.93577701] # [0.56243911 0.69179631 0.83407725]] # arr3 : [4.41402883 6.03259052] # arr4 : [9 7 7]
如果想使每次生成的數(shù)據(jù)相同,可以指定一個(gè)隨機(jī)種子
import numpy as np np.random.seed(123) arr = np.random.rand(2, 3)#[[0.69646919 0.28613933 0.22685145] [0.55131477 0.71946897 0.42310646]] #打亂數(shù)組 np.random.shuffle(arr)#[[0.55131477 0.71946897 0.42310646] [0.69646919 0.28613933 0.22685145]]
2.1.3 創(chuàng)建特定形狀數(shù)組
主要有如下幾種:
import numpy as np #未初始化的數(shù)組 arr1 = np.empty((2,3)) #數(shù)組元素以 0 來填充 arr2 = np.zeros((2, 3)) #數(shù)組元素以 1 來填充 arr3 = np.ones((2, 3)) #數(shù)組以指定的數(shù)來進(jìn)行填充,這里舉例3 arr4 = np.full((2, 3), 3) #生成單位,對(duì)角線上元素為 1,其他為0 arr5 = np.eye(2) #二維矩陣輸出矩陣對(duì)角線的元素,一維矩陣形成一個(gè)以一維數(shù)組為對(duì)角線元素的矩陣 arr6 = np.diag(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
在創(chuàng)建給定長度的等差數(shù)列時(shí),要注意的是np.linspace形成的數(shù)組一定包括范圍的首位兩個(gè)元素,則步長為(end - start) / (length - 1)。而np.arange是自己指定的步長(默認(rèn)為1)也就意味著形成的數(shù)組不一定包括末尾數(shù)
arr7 = np.linspace(0, 1, 4) #out : array([0. , 0.33333333, 0.66666667, 1. ]) arr8 = np.arange(0, 9, 2) #out : array([0, 2, 4, 6, 8])
2.2 索引和切片
Numpy可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣,設(shè)置start, stop 及 step 參數(shù)。
2.2.1 元素表示
Numpy數(shù)組的下標(biāo)表示與list是一樣的,對(duì)于矩陣來說,要注意中括號(hào)里要用逗號(hào)將行和列的表示進(jìn)行分隔?;镜谋硎痉椒ㄈ缦聢D,左邊為表達(dá)式,右邊為表達(dá)式獲取的元 素。注意,不同的邊界,表示不同的表達(dá)式。
例子:
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
a[0] : 指的是第一行
a[1, 2] 或者 a[1][2] : 全下標(biāo)定位單個(gè)元素,在a中表示7這個(gè)元素
2.2.2 切片表示
若a = np.arange(10),b = a[2 : 7 : 2]則表示從索引 2 開始到索引 7 停止,間隔為 2,即b為[2, 4, 6]。此外也可以通過切片操作來對(duì)元素進(jìn)行修改,如:
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) a[0 , 1 : 3] = 100, 101#a[0 , 1 : 3]表示第一行的第二列和第二列即[2, 3] a #out : array([[ 1, 100, 101], [ 4, 5, 6], [ 7, 8, 9]])
2.2.3 多維數(shù)組的切片
NumPy的多維數(shù)組和一維數(shù)組類似。多維數(shù)組有多個(gè)軸。從內(nèi)到外分別是第0軸,第1軸,第2軸......切片后的數(shù)據(jù)與切片前的數(shù)據(jù)共享原數(shù)組的儲(chǔ)存空間
當(dāng)然,切片操作是針對(duì)我們想要獲取的數(shù)據(jù)是連續(xù)的,如果我們想要獲取離散數(shù)據(jù)就不能使用切片的方法,再者就是我們不能一個(gè)一個(gè)來進(jìn)行提取,Numpy有一種很方便的方法可以獲得離散數(shù)據(jù)。即下面
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) rows = np.array( [ [0,0],[3,3] ] ) #表示第1、4行 cols = np.array( [ [0,2],[0,2] ] ) #表示第1、3列 y = x[rows,cols] y # out : array([[ 0, 2], [ 9, 11]])
2.2.4 布爾索引
顧名思義,通過布爾運(yùn)算(如:比較運(yùn)算符)來獲取符合指定條件的元素的數(shù)組。
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print(x[x > 5]) # out : [ 6 7 8 9 10 11] b = x > 5 b # 打印布爾運(yùn)算的結(jié)果
2.2.5 元素查找定位
Numpy庫中提供了where函數(shù)來查找滿足條件元素的索引,表示如下:
- np.where(condition, x, y): 滿足條件(condition),輸出x,不滿足輸出y
- np.where(condition): 輸出滿足條件 (即非0) 元素的坐標(biāo)
a = np.array([2,4,6,8,10,3]).reshape(2,3) c = np.where(a > 5) # 返回索引 out : (array([0, 1, 1], dtype=int64), array([2, 0, 1], dtype=int64)) a[c] # 獲得元素
2.2.6 元素刪除
np.delete(arr, obj, axis=None)
- 第一個(gè)參數(shù):要處理的矩陣,
- 第二個(gè)參數(shù),處理的位置,下標(biāo)
- 第三個(gè)參數(shù),0表示按照行刪除,1表示按照列刪除,默認(rèn)為0
- 返回值為刪除后的剩余元素構(gòu)成的矩陣
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) np.delete(arr, [1], 0) # 表示刪除第二行
2.3 Numpy數(shù)組的拼接和分割
2.3.1 拼接
下面的圖列舉了常見的用于數(shù)組或向量 合并的方法。
說明:
- append、concatenate以及stack都有一個(gè)axis參數(shù),用于控制數(shù)組的合 并方式是按行還是按列。
- 對(duì)于append和concatenate,待合并的數(shù)組必須有相同的行數(shù)或列數(shù)
- stack、hstack、dstack,要求待合并的數(shù)組必須具有相同的形狀
a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) np.hstack((a,b)) #等效于 np.concatenate((a,b),axis = 1) # out : array([[1, 2, 5, 6], [3, 4, 7, 8]]) a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) np.vstack((a,b)) #等價(jià)于 np.concatenate((a,b),axis = 0) # out : array([[1, 2], [3, 4], [5, 6], [7, 8]])
2.3.2 分割
- 水平分割:np.split(arr,n,axis=1) 或 np.hsplit(arr,n):按列分成n份。返回一個(gè)list
- 垂直分割:np.split(arr,n,axis=0) 或 np.vsplit(arr,n):按行分成n份,返回一個(gè)list
x = np.arange(12).reshape(3, 4) np.split(x, 3) # out : [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] y = np.arange(9).reshape(1, 9) np.split(y, 3, axis = 1) # out : [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
2.4 維度變換
在機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)的任務(wù)中,通常需要將處理好的數(shù)據(jù)以模型能 接收的格式輸入給模型,然后由模型通過一系列的運(yùn)算,最終返回一個(gè)處理 結(jié)果。然而,由于不同模型所接收的輸入格式不一樣,往往需要先對(duì)其進(jìn)行 一系列的變形和運(yùn)算,從而將數(shù)據(jù)處理成符合模型要求的格式。在矩陣或者 數(shù)組的運(yùn)算中,經(jīng)常會(huì)遇到需要把多個(gè)向量或矩陣按某軸方向合并,或展平 (如在卷積或循環(huán)神經(jīng)網(wǎng)絡(luò)中,在全連接層之前,需要把矩陣展平)的情 況。下面介紹幾種常用的數(shù)據(jù)變形方法。
1) reshape 不改變?cè)瓟?shù)組元素,返回一個(gè)新的shape維度的數(shù)組(維度變換)
x = np.arange(12).reshape(3, 4) x # out : array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) # 指定維度時(shí)可以只指定行數(shù)或列數(shù), 其他用 -1 代替 x.reshape(3, -1) # out : array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
2) resize 改變向量的維度(修改向量本身):
arr =np.arange(10) print(arr) # out : [0 1 2 3 4 5 6 7 8 9] arr.resize(2, 5) # 將向量 arr 維度變換為2行5列 print(arr) # out : [[0 1 2 3 4], [5 6 7 8 9]]
3) T 轉(zhuǎn)置
arr = np.arange(8).reshape(2, 4) arr.shape # out : (2, 4) arr.T.shape # out : (4, 2)
4) ravel 向量展平
arr = np.arange(8).reshape(2, 4) arr.ravel() # out : array([0, 1, 2, 3, 4, 5, 6, 7])
5) flatten 把矩陣轉(zhuǎn)換為向量,這種需求經(jīng)常出現(xiàn)在卷積網(wǎng)絡(luò)與全連接層之間。
arr = np.arange(8).reshape(2, 4) arr.flatten() # out : array([0, 1, 2, 3, 4, 5, 6, 7])
6) squeeze 這是一個(gè)主要用來降維的函數(shù),把矩陣中含1的維度去掉
arr = np.arange(8).reshape(2, 4, 1) arr.shape # out : (2, 4, 1) arr.squeeze().shape # out : (2, 4)
7) transpose 對(duì)高維矩陣進(jìn)行軸對(duì)換,這個(gè)在深度學(xué)習(xí)中經(jīng)常使用,比如把圖片中表 示顏色順序的RGB改為GBR。
arr = np.arange(12).reshape(2, 6, 1) arr.shape # out : (2, 6, 1) arr.transpose(1, 2, 0).shape # out : (6, 1, 2)
拓展8) swapaxes 將兩個(gè)維度調(diào)換, 就是把對(duì)應(yīng)的下標(biāo)換個(gè)位置,類似于transpose
arr = np.arange(20).reshape(4, 5) arr.swapaxes(1, 0)
2.5 Numpy數(shù)值計(jì)算
2.5.1 通用函數(shù)對(duì)象(ufunc)
ufunc是universal function的簡稱,種能對(duì)數(shù)組每個(gè)元素進(jìn)行運(yùn)算的函數(shù)。NumPy的許多ufunc函數(shù)都是用C語言實(shí)現(xiàn)的,因此它們的運(yùn)算速度非???。下圖是在數(shù)據(jù)批量處過程中較為常用的幾個(gè)函數(shù)
使用的格式基本如下:np.函數(shù)名(數(shù)組, 指定計(jì)算的維度(默認(rèn)為0)),如:
a = np.array([[6, 3, 7, 4, 6], [9, 2, 6, 7, 4], [3, 7, 7, 2, 5], [4, 1, 7, 5, 1]]) np.sum(a, axis = 0) # out : array([22, 13, 27, 18, 16]) np.sum(a, axis = 1)# out : array([26, 28, 24, 18]
其余函數(shù)使用過程均可參考上述求和過程。下面繼續(xù)介紹一下數(shù)組的排序問題。主要使用函數(shù)有np.min,np.max,np.median。
arr = np.array([[10, 11, 12], [13, 14, 15]]) np.min(arr, axis = 0) # out : array([10, 11, 12]) 按行求最小值,即列不變,行變 np.min(arr, axis = 1) # out : array([10, 13]) 按列求最小值,即行不變,列變
我們可以通過np.argmin,np.argmax獲得相對(duì)應(yīng)的最小值、最大值的下標(biāo)
arr = np.array([[10, 14, 12], [13, 11, 15]]) np.argmin(arr, axis = 0) # out : array([0, 1, 0], dtype=int64) 按行求最小值,即列不變,行變 np.argmin(arr, axis = 1) # out : array([0, 1], dtype=int64) 按列求最小值,即行不變,列變
使用np.sort和np.argsor進(jìn)行排序并排序后的下標(biāo)
arr = np.array([1, 3, 5, 2, 4]) np.sort(arr) # out : array([1, 2, 3, 4, 5]) np.argsort(arr) # out : array([0, 3, 1, 4, 2], dtype=int64)
2.5.2 矩陣運(yùn)算
1) 對(duì)應(yīng)元素相乘 對(duì)應(yīng)元素相乘(Element-Wise Product)是兩個(gè)矩陣中對(duì)應(yīng)元素乘積。 np.multiply函數(shù)用于數(shù)組或矩陣對(duì)應(yīng)元素相乘,輸出與相乘數(shù)組或矩陣的大 小一致。
a = np.array([[1,0],[0,1]]) b = np.array([[4,1],[2,2]]) np.multiply(a, b) # 等效于a * b,out : array([[4, 0], [0, 2]])
計(jì)算過程如下圖:
2) 點(diǎn)積 點(diǎn)積運(yùn)算(Dot Product)又稱為內(nèi)積,在Numpy用np.dot或者np.matmul表示
a = np.array([[1,0],[0,1]]) b = np.array([[4,1],[2,2]]) np.dot(a, b) # 等效于np.matmul(a, b) out : array([[4, 1], [2, 2]])
計(jì)算過程如下圖:
3) 行列式 計(jì)算行列式的值
arr = np.array([[1,2], [3,4]]) np.linalg.det(arr) # out : -2.0000000000000004
4) 求逆
arr = np.array([[1,2], [3,4]]) np.linalg.inv(arr) # out : array([[-2. , 1. ], [ 1.5, -0.5]])
5) 特征值和特征向量
A = np.random.randint(-10,10,(4,4)) C = np.dot(A.T, A) vals, vecs = np.linalg.eig(C) print(f'特征值 : {vals}, 特征向量 : {vecs}') out : 特征值 : [395.26566729 358.52489695 44.41465068 52.79478508] 特征向量 : [[ 0.30221599 0.64309202 -0.64757004 -0.27522935] [ 0.87819925 -0.03518532 0.18871425 0.43808105] [-0.35779498 0.26192443 -0.27010759 0.85464626] [ 0.09702746 -0.71874212 -0.68708214 0.04374437]]
2.6 插值運(yùn)算
這個(gè)過程其實(shí)就是我們?cè)跀?shù)學(xué)中已知一個(gè)函數(shù),然后給出x值,讓你根據(jù)這個(gè)函數(shù)求對(duì)應(yīng)的y值,一般在曲線平滑處理中有較多的使用在Numpy中由numpy.interp(x, xp, fp, left=None, right=None, period=None)表示
- x - 表示將要計(jì)算的插值點(diǎn)x坐標(biāo)
- xp - 表示已有的xp數(shù)組
- fp - 表示對(duì)應(yīng)于已有的xp數(shù)組的值
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2 * np.pi, 10) y = np.sin(x) xvals = np.linspace(0, 2 * np.pi, 10000) yinterp = np.interp(xvals, x, y) plt.plot(x, y, 'r-', xvals, yinterp, 'b-') plt.show()
::: hljs-center
2.7 曲線擬合
我們?cè)跀?shù)學(xué)建模過程中得到我們的數(shù)據(jù)之后,如果我們想要使用某個(gè)函數(shù)去描述數(shù)據(jù)的規(guī)律,這個(gè)過程其實(shí)就在曲線擬合的過程,這里只介紹最簡單的一種擬合方式。Numpy中由numpy.polyfit(x, y, deg)表示
- x為待擬合的x坐標(biāo)
- y為待擬合的y坐標(biāo)
- deg為擬合自由度,即多項(xiàng)式的最高次冪
import matplotlib.pyplot as plt import numpy as np x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]) y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0]) #得到多項(xiàng)式的系數(shù) z = np.polyfit(x, y, 3) z2 = np.polyfit(x, y, 5) #得到多項(xiàng)式函數(shù) f = np.poly1d(z) f2 = np.poly1d(z2) #用兩個(gè)函數(shù)進(jìn)行擬合 xval = np.linspace(0, 10, 50) yval1 = f(xval) yval2 = f2(xval) #作圖 plt.plot(xval, yval1, 'r--o', xval, yval2, 'b-o') plt.legend(['The deg is 3', 'The deg is 5']) plt.show() print(f) # out : 0.08704 x^3 - 0.8135 x^2 + 1.693 x - 0.03968 print(f2) # out : -0.008333 x^5 + 0.125 x^4 - 0.575 x^3 + 0.625 x^2 + 0.6333 x - 1.74e-14
::: hljs-center
由圖能夠看出,3和5自由度的函數(shù)在前面的函數(shù)曲線基本是重合的,但是約在7左右開始朝著相反方向進(jìn)行變化,因此擬合函數(shù)的自由度對(duì)效果的影響是非常大的,找到一個(gè)合適的自由度至關(guān)重要。
3 Numpy IO操作
1) 保存數(shù)組 保存一個(gè)數(shù)組到一個(gè)二進(jìn)制的文件中,保存格式是.npy,Numpy中由np.save(file, array)表示。
2) 讀取文件 arr = numpy.load(file): 讀取npy 文件到內(nèi)存
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) #保存數(shù)據(jù) np.save('test.npy', arr) #下載數(shù)據(jù) np.load('test.npy') # out : array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
拓展 保存到文本文件
- np.savetxt(fname, X, fmt=‘%.18e’, delimiter=‘ ‘)
- arr = numpy.loadtxt(fname, delimiter=None)
參考《Python深度學(xué)習(xí)基于PyTorch》 吳茂貴
更多關(guān)于Python Numpy庫教程請(qǐng)查看下面的相關(guān)文章
相關(guān)文章
opencv+圖像處理(Image Processing in OpenCV)
這篇文章主要介紹了opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04Python?matplotlib繪制散點(diǎn)圖配置(萬能模板案例)
這篇文章主要介紹了Python?matplotlib繪制散點(diǎn)圖配置(萬能模板案例),散點(diǎn)圖是指在??回歸分析???中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的?分布圖???,散點(diǎn)圖表示因變量隨??自變量???而?變化???的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)??對(duì)數(shù)???據(jù)點(diǎn)進(jìn)行?擬合2022-07-07python尋找list中最大值、最小值并返回其所在位置的方法
今天小編就為大家分享一篇python尋找list中最大值、最小值并返回其所在位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe)
這篇文章主要介紹了詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-07-07python 對(duì)象和json互相轉(zhuǎn)換方法
下面小編就為大家分享一篇python 對(duì)象和json互相轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03Python多進(jìn)程方式抓取基金網(wǎng)站內(nèi)容的方法分析
這篇文章主要介紹了Python多進(jìn)程方式抓取基金網(wǎng)站內(nèi)容的方法,結(jié)合實(shí)例形式分析了Python多進(jìn)程抓取網(wǎng)站內(nèi)容相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-06-06Python的math模塊中的常用數(shù)學(xué)函數(shù)整理
這篇文章主要介紹了Python的math模塊中的常用數(shù)學(xué)函數(shù)整理,同時(shí)對(duì)運(yùn)算符的運(yùn)算優(yōu)先級(jí)作了一個(gè)羅列,需要的朋友可以參考下2016-02-02python實(shí)現(xiàn)最大子序和(分治+動(dòng)態(tài)規(guī)劃)
這篇文章主要介紹了python實(shí)現(xiàn)最大子序和(分治+動(dòng)態(tài)規(guī)劃),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07