
發(fā)布
注冊(cè)
/
登錄Python庫(kù)的案例
數(shù)據(jù)科學(xué)20個(gè)最好的Python庫(kù)
Python 在解決數(shù)據(jù)科學(xué)任務(wù)和挑戰(zhàn)方面繼續(xù)處于領(lǐng)先地位。去年,我們?cè)l(fā)表一篇博客文章 Top 15 Python Libraries for Data Science in 2017,概述了當(dāng)時(shí)業(yè)已證明最有幫助的Python庫(kù)。今年,我們擴(kuò)展了這個(gè)清單,增加了新的Python庫(kù),并重新審視了去年已經(jīng)討論過(guò)的 Python 庫(kù),重點(diǎn)關(guān)注了這一年來(lái)的更新。
我們的選擇實(shí)際上包含了 20 多個(gè)庫(kù),因?yàn)槠渲幸恍?em>庫(kù)是相互替代的,可以解決相同的問(wèn)題。因此,我們將它們放在同一個(gè)分組。
▌核心庫(kù)和統(tǒng)計(jì)數(shù)據(jù)
1. NumPy (Commits: 17911, Contributors: 641)
官網(wǎng):http://www.numpy.org/
NumPy 是科學(xué)應(yīng)用程序庫(kù)的主要軟件包之一,用于處理大型多維數(shù)組和矩陣,它大量的高級(jí)數(shù)學(xué)函數(shù)集合和實(shí)現(xiàn)方法使得這些對(duì)象執(zhí)行操作成為可能。
2. SciPy (Commits: 19150, Contributors: 608)
官網(wǎng):https://scipy.org/scipylib/
科學(xué)計(jì)算的另一個(gè)核心庫(kù)是 SciPy。它基于 NumPy,其功能也因此得到了擴(kuò)展。SciPy 主數(shù)據(jù)結(jié)構(gòu)又是一個(gè)多維數(shù)組,由 Numpy 實(shí)現(xiàn)。這個(gè)軟件包包含了幫助解決線(xiàn)性代數(shù)、概率論、積分計(jì)算和許多其他任務(wù)的工具。此外,SciPy 還封裝了許多新的 BLAS 和 LAPACK 函數(shù)。
3. Pandas (Commits: 17144, Contributors: 1165)
官網(wǎng):https://pandas.pydata.org/
Pandas 是一個(gè) Python 庫(kù),提供高級(jí)的數(shù)據(jù)結(jié)構(gòu)和各種各樣的分析工具。這個(gè)軟件包的主要特點(diǎn)是能夠?qū)⑾喈?dāng)復(fù)雜的數(shù)據(jù)操作轉(zhuǎn)換為一兩個(gè)命令。
展開(kāi) abaqus-python二次開(kāi)發(fā)-安裝第三方庫(kù)
參考 abaqus2020安裝python三方庫(kù)_留痕過(guò)雁的博客-CSDN博客_abaqus python裝第三方庫(kù)
本文使用abaqus2020,需要安裝的第三方庫(kù)為geomdl,如果您需要安裝其他庫(kù),操作方法類(lèi)似。
1.首先確認(rèn)是否安裝過(guò)所需庫(kù)文件
在abaqus-cae界面信息欄下方,python命令行輸入
import numpy
import math
import geomdl
由于Abaqus內(nèi)置numpy庫(kù)和math庫(kù)
但是不存在geomdl庫(kù)
如圖,若未安裝會(huì)提示ImportError: No module named geomdl
2.將abaqus python路徑加入到計(jì)算機(jī)路徑
找到abaqus python 的安裝位置,如我的abaqus安裝在d盤(pán),相應(yīng)的python位置如下,如果您的安裝位置不同,可以類(lèi)推。
展開(kāi) ABAQUS擴(kuò)展python第三方庫(kù)
而在其二次開(kāi)發(fā)中, 不可避免的就要使用到python第三方庫(kù), 不過(guò)ABAQUS自身的python已經(jīng)被其開(kāi)發(fā)者魔改的不成樣子, 并且直接在其內(nèi)部進(jìn)行增減, 容易污染ABAQUS環(huán)境, 容易造成各個(gè)庫(kù)文件之間的依賴(lài)混亂. 所以采用外部擴(kuò)展的方法的優(yōu)勢(shì)就比較明顯了.”
01
—
python2.7的安裝
ABAQUS使用的python主要是2.7版本, 據(jù)說(shuō)ABAQUS2020已經(jīng)支持python3, 但是我并沒(méi)有獲得相關(guān)的知識(shí).
python2.7安裝文件的獲取可以在python官網(wǎng)上下載, 不過(guò)下載速度比較慢.
也可以公眾號(hào)內(nèi)回復(fù)python2.7獲取百度網(wǎng)盤(pán)下載鏈接.
在安裝時(shí)記得要將python2.7添加至環(huán)境變量, 如果忘記添加, 也可以在安裝完成后手動(dòng)添加環(huán)境變量.
該安裝文件已經(jīng)集成了pip, 在已添加環(huán)境變量的前提下, 通過(guò)cmd(cmder)輸入pip2.7即可進(jìn)行包管理.
推薦使用清華鏡像:-i https://pypi.tuna.tsinghua.edu.cn/simple.
展開(kāi) ABAQUS-Python第三方庫(kù)的導(dǎo)入
Python語(yǔ)言上手容易,開(kāi)源,大量的第三方庫(kù)可供調(diào)用,因此近年來(lái)發(fā)展迅猛,常年盤(pán)踞各類(lèi)機(jī)構(gòu)推出的程序語(yǔ)言排行榜的前幾位。ABAQUS/CAE的前處理基本是依賴(lài)于Python語(yǔ)言打造,因此采用Python進(jìn)行二次開(kāi)發(fā)很方便。
圖1. IEEE Spectrum 第六屆編程語(yǔ)言排行榜
ABAQUS軟件包中包含了一個(gè)完整的Python解釋器內(nèi)核,另外也有NumPy庫(kù),不過(guò)這些都被達(dá)索公司進(jìn)行了深度定制,在ABAQUS2020版本中加入了SciPy和Matplotlib這兩個(gè)庫(kù),其他庫(kù)并未包含。另外,目前其他低版本ABAQUS仍然大量存在的情況下,如何調(diào)用Python第三方庫(kù)和新版本調(diào)用更多的庫(kù),就成為了一個(gè)需要解決的問(wèn)題。
對(duì)于系統(tǒng)中直接安裝的Python解釋器,可以采用很多種方法安裝第三方庫(kù),大家可以自行百度,不再?gòu)?fù)述。關(guān)注“ABAQUS二次開(kāi)發(fā)”公眾號(hào)的朋友,基本都是搞有限元數(shù)值計(jì)算的,我推薦大家安裝Anaconda,好處就是不需要自己去進(jìn)行復(fù)雜的第三方庫(kù)安裝。Anaconda是一個(gè)開(kāi)源的Python發(fā)行版本,其包含了conda、Python、SciPy、NumPy、SciPy和Matplotlib等180多個(gè)科學(xué)包及其依賴(lài)項(xiàng),安裝包四五百兆。
圖2. Anaconda標(biāo)識(shí)
背景鋪墊完畢,回到本文的主題,為ABAQUS內(nèi)置的Python解釋器導(dǎo)入第三方庫(kù),主要是指科學(xué)計(jì)算用的相關(guān)庫(kù),但是不建議采用正常的安裝方法,如Pip。為什么呢?
展開(kāi) 
使用python的sympy庫(kù)進(jìn)行積分運(yùn)算
摘要:使用python的sympy庫(kù)中integrate函數(shù)進(jìn)行積分運(yùn)算
00 積分的分類(lèi)
1)定積分和不定積分
2)一次積分,二次積分,三次積分
01 不定積分和定積分
不定積分實(shí)例,本文演示三個(gè),其它讀者可自行演示
from sympy import *
from sympy.abc import x
integrate(1/x,x)
Out[7]: log(x)
from sympy import *
from sympy.abc import x,a
integrate(a**x,x)
Out[13]: Piecewise((a**x/log(a), Ne(log(a), 0)), (x, True))
from sympy import *
from sympy.abc import x
integrate(sec(x)**2,x)
Out[11]: sin(x)/cos(x)
定積分實(shí)例,
from sympy import *
from sympy.abc import x
integrate((2*cos(x)+sin(x)-1),(x,0,pi/2))
Out[17]: -pi/2 + 3
from sympy import *
from sympy.abc import x
integrate(sin(x),(x,0,pi))
Out[19]: 2
from sympy import *
from sympy.abc import x
integrate(1/x,(x,-2,-1))
Out[21]: -log(2)
02 線(xiàn)積分,轉(zhuǎn)化為一般積分
直線(xiàn)積分,
平面曲線(xiàn)積分,
空間曲線(xiàn)積分,
03 面積分,轉(zhuǎn)化為二重積分
平面積分,
展開(kāi) 使用Python建立Abaqus材料庫(kù)
可以使用Python腳本來(lái)編寫(xiě)材料庫(kù)腳本,可以快速在abaqus界面定義材料屬性。下文將介紹如何使用python編寫(xiě)Abaqus材料庫(kù)。
0
1
材料介紹
我們?cè)谶@里建立包含鈦,AISI 1005 鋼和金這三種材料的材料庫(kù)。
abaqus python 安裝第三方庫(kù)
打開(kāi)abaqus command
D:\abaqus\temp>abaqus python -m pip list # 查看安裝包列表
D:\abaqus\software\SIMULIA\EstProducts\2022\win_b64\code\bin\SMAPython.exe: No module named pip
D:\abaqus\temp>abaqus python -m ensurepip --upgrade # 用ensure包安裝pip
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.3 setuptools-39.0.1
D:\abaqus\temp>abaqus python -m pip --version # 查看pip的version
pip 9.0.3 from D:\abaqus\software\SIMULIA\EstProducts\2022\win_b64\tools\SMApy\python2.7\lib\site-packages (python 2.7)
D:\abaqus\temp>abaqus python -m pip install joblib # 用pip安裝joblib庫(kù)
Successfully installed joblib-0.14.1
在cae中import joblib未報(bào)錯(cuò)
展開(kāi) 詳述python中的math標(biāo)準(zhǔn)庫(kù)
00 常數(shù)
math.pi
Out[29]: 3.141592653589793
math.e
Out[30]: 2.718281828459045
math.tau
Out[31]: 6.283185307179586
01 上限,下限,絕對(duì)值
import math
math.ceil(12.5) #上限
Out[1]: 13
math.ceil(-11.4) #上限
Out[2]: -11
math.floor(13.6) #下限
Out[3]: 13
math.floor(-12.9) #下限
Out[4]: -13
math.fabs(12.8) #絕對(duì)值
Out[5]: 12.8
math.fabs(-12.8) #絕對(duì)值
Out[6]: 12.8
02 指數(shù),對(duì)數(shù),平方根
math.exp(2) #指數(shù),以e為底
Out[7]: 7.38905609893065
math.pow(math.e,2) #指數(shù),以e為底
Out[8]: 7.3890560989306495
math.expm1(2) #指數(shù),以e為底,在減去1
Out[10]: 6.38905609893065
math.pow(10,2) #指數(shù) ,以10 為底
Out[9]: 100.0
math.log(5+1)#對(duì)數(shù),以e為底
Out[11]: 1.791759469228055
math.log1p(5) #對(duì)數(shù),以e為底,函數(shù)加1后再求對(duì)數(shù)
Out[12]: 1.791759469228055
math.log2(8) #對(duì)數(shù),以2為底
Out[13]: 3.0
math.log10(100) #對(duì)數(shù),以10為底
Out[14]: 2.0
math.sqrt(4)
Out[15]: 2.0
展開(kāi) 25 python擴(kuò)展庫(kù)SymPy初探(符號(hào)運(yùn)算)
00 導(dǎo)入擴(kuò)展庫(kù)
import sympy as sy
01 展開(kāi)表達(dá)式 expand()
import sympy as sy
x,y,z=sy.symbols('x,y,z')
print(sy.expand(x*(y+z)))
print(sy.expand((x+y)**3))
print(sy.expand(x**(y+z)))
print(sy.expand(sy.sin(x+y),trig=True))
print(sy.expand_trig(sy.sin(x+y)))
x*y + x*z
x**3 + 3*x**2*y + 3*x*y**2 + y**3
x**y*x**z
sin(x)*cos(y) + sin(y)*cos(x)
sin(x)*cos(y) + sin(y)*cos(x)
歐拉公式:
x=sy.symbols('x',real=True)
print(sy.expand(sy.exp(sy.I*x),complex=True))
I*sin(x) + cos(x)
02 求解方程和方程組
求解方程
from sympy import *
a,b,c,x=symbols('a,b,c,x')
print(solve(a*x**2+b*x+c,x))
[(-b + sqrt(-4*a*c + b**2))/(2*a), -(b + sqrt(-4*a*c + b**2))/(2*a)]
求解方程組
from sympy import *
x,y=symbols('x,y')
print(solve((x**2+x*y+1,y**2+x*y+2),x,y))
[(-sqrt(3)*I/3, -2*sqrt(3)*I/3), (sqrt(3)*I/3, 2*sqrt(3)*I/3)]
03 積分運(yùn)算
不定積分
from
展開(kāi) Python二次開(kāi)發(fā)—?jiǎng)?chuàng)建輸出數(shù)據(jù)庫(kù)并添加數(shù)據(jù)
本期內(nèi)容轉(zhuǎn)載本人公眾號(hào):
易木木響叮當(dāng),源代碼可在公眾號(hào)內(nèi)回復(fù):
創(chuàng)建數(shù)據(jù)庫(kù),即可自動(dòng)獲取
。
Python二次開(kāi)發(fā)更新啦~
最近由于木木學(xué)業(yè)壓力比較大,故更文速度有點(diǎn)小慢,請(qǐng)大家諒解諒解。廢話(huà)不多說(shuō),進(jìn)入今天的正題:
本期內(nèi)容將編寫(xiě)腳本創(chuàng)建輸出數(shù)據(jù)庫(kù),并向其中添加模型數(shù)據(jù)、場(chǎng)數(shù)據(jù)和歷史數(shù)據(jù),在后處理模塊中顯示位移場(chǎng)變量計(jì)算結(jié)果,最后保存ODB文件。源腳本來(lái)自于曹老師的《Python語(yǔ)言在Abaqus中的應(yīng)用》,好書(shū)值得推薦!
編程思路:
導(dǎo)入相應(yīng)模塊。本例中將創(chuàng)建輸出數(shù)據(jù)庫(kù),并向其中添加數(shù)據(jù),于是應(yīng)添加:odbAccess、odbMaterial、odbSection、和abaqusConstants等模塊;
創(chuàng)建輸出數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)不包含任何模型需要調(diào)用相應(yīng)函數(shù)構(gòu)造對(duì)象。一般情況下需要?jiǎng)?chuàng)建以下對(duì)象:材料屬性(Material模塊)、截面(Section模塊)、部件實(shí)例(Assembly模塊)、分析步和幀(Step模塊)、節(jié)點(diǎn)和單元(Mesh模塊);
向輸出數(shù)據(jù)庫(kù)中添加場(chǎng)數(shù)據(jù)和歷程數(shù)據(jù),本例中只向輸出數(shù)據(jù)庫(kù)中添加了節(jié)點(diǎn)位移,場(chǎng)輸出為默認(rèn)輸出;
創(chuàng)建完數(shù)據(jù)庫(kù)后,應(yīng)調(diào)用save( )方法保存數(shù)據(jù)庫(kù)文件,然后調(diào)用close( )方法關(guān)閉文件。
在Abaqus操作如下:點(diǎn)擊File,Run Script,
若CAE界面下方出現(xiàn):
New output database has been created successfully!
You can view the odb_Create_ODB.odb file in the visualization module!
展開(kāi) 【結(jié)構(gòu)軟件】如何在RFEM6中使用python和第三方庫(kù)
Python支持
之前的版本只能支持Javascript語(yǔ)言,目前的版本不僅支持python語(yǔ)言,還能安裝第三方庫(kù),并且支持一鍵導(dǎo)出任意模型的python代碼。
一、打開(kāi)控制臺(tái)并切換到Python
工具欄中/菜單”視圖“中點(diǎn)擊”打開(kāi)/關(guān)閉控制臺(tái)“
默認(rèn)語(yǔ)言是JavaScript,點(diǎn)擊下拉箭頭,切換到python
在控制臺(tái)中輸入python命令即可
如何了解RFEM6相關(guān)對(duì)象的使用方法?
點(diǎn)擊控制臺(tái)上方的感嘆號(hào),即可跳出對(duì)話(huà)框,顯示各種對(duì)象屬性的用法。
二、如何安裝并使用第三方庫(kù)
點(diǎn)擊控制臺(tái)上方的”打開(kāi)新終端“
在終端里輸入"python -m pip install numpy",即可安裝numpy庫(kù)到RFEM6中。
注意事項(xiàng):如果電腦上以前沒(méi)有安裝過(guò)python可以輸入pip install numpy。如果以前安裝過(guò),需要在前面添加python -m這樣才能安裝到RFEM6路徑中,否則會(huì)安裝庫(kù)到之前的python中。
使用第三方庫(kù):
三、如何更高效編寫(xiě)代碼
在控制臺(tái)中輸入python代碼不便于反復(fù)調(diào)試和保存代碼。我們可以打開(kāi)腳本管理器,并創(chuàng)建腳本,并用VS CODE進(jìn)行編輯。
工具欄中/視圖菜單中,點(diǎn)擊“腳本管理器”
語(yǔ)言切換到python
右鍵“dlubal腳本”新建腳本
右鍵腳本>編輯(提前安裝好vs code,并講vs code設(shè)置為py文件的默認(rèn)編輯器)
打開(kāi)vs code中就可以進(jìn)行編輯了
編輯好代碼后,右鍵腳本,運(yùn)行,即可在模型窗口中看到結(jié)果。
四、如何獲得更多示例代碼
任意模型都可以通過(guò)文件>導(dǎo)出>python腳本,獲得模型的python代碼。
展開(kāi) 
02 如何使用python做傅里葉變換(使用numpy庫(kù))
import numpy as np #載入numpy庫(kù)
import matplotlib.pyplot as plt #載入matplotlib庫(kù)的pyplot模塊
#定義時(shí)域信號(hào)
fs=128 #采樣率
t=np.arange(0,10,1/fs) #定義時(shí)間點(diǎn)
xt=5*np.sin(2*np.pi*10*t) #生成10Hz諧波,幅值為5
xf=np.fft.fft(xt) #傅里葉變換
af=np.abs(xf)/len(xf) #求復(fù)數(shù)的模
afn=np.short(af.size/2) #整型
f=np.arange(0,fs/2,fs/len(t)) #定義頻率點(diǎn)
plt.subplot(211) #子圖1
plt.plot(t,xt) #時(shí)域信號(hào)
plt.subplot(212) #子圖2
plt.plot(f,2*af[:afn]) #頻域信號(hào)
展開(kāi) 如何使用python快速?gòu)奈锪?em>庫(kù)中匹配出BOM里元器件的料號(hào)
上次我們使用VBA解決了這個(gè)問(wèn)題,現(xiàn)在我們使用python來(lái)解決這個(gè)問(wèn)題。
這是物料庫(kù),里面存放了元器件的規(guī)格描述和料號(hào)等信息。現(xiàn)在需要從這個(gè)物料庫(kù)找出以下BOM中元器件的料號(hào),并一一對(duì)應(yīng)填寫(xiě)出來(lái)。
首先,在pycharm中編寫(xiě)以下代碼:
import xlwt
import xlrd
import xlutils.copy
#wb=xlwt.Workbook(encoding = 'utf-8')
#ws = wb.add_sheet('My Worksheet')
#ws.write(1,0,label ='456')
#ws.write(1,1,label ='123')
#wb.save('Excel_test.xls')
wb1=xlrd.open_workbook('物料庫(kù)20200831.xls')
wb2=xlrd.open_workbook('bom V01貼片BOM20200828.xlsx')
wp=xlutils.copy.copy(wb2)
ws3=wp.get_sheet(0)
ws1=wb1.sheets()[0]
ws2=wb2.sheets()[0]
nrow1=ws1.nrows
nrow2=ws2.nrows
print (nrow1)
print (nrow2)
for i in range(3,nrow2-1):
if ws2.cell(i, 3).value!='':
#print(ws2.cell(i,3).value)
for j in range(1,nrow1-1):
#if ws1.cell(j,4).value!
展開(kāi) Python第三方庫(kù)巧用,制作圖片驗(yàn)證碼只需三行代碼
我們?cè)?PC 的網(wǎng)頁(yè)端或者手機(jī)上的 app 進(jìn)行登錄或者注冊(cè)時(shí),應(yīng)該總會(huì)遇見(jiàn)圖片驗(yàn)證碼,比如下面這類(lèi):
上面這些圖片驗(yàn)證碼都是通過(guò)Python制作出來(lái)的,方法有很多,但主要都是依賴(lài)Python強(qiáng)大的第三方庫(kù),下面就介紹一下制作圖片驗(yàn)證碼的三種方法,難度由高到低。
Pillow庫(kù)
Pillow是一個(gè)非常強(qiáng)大的圖片處理模塊,其中Image是Pillow中最為重要的類(lèi),實(shí)現(xiàn)了Pillow中大部分的功能,這個(gè)類(lèi)的主要用來(lái)表示圖片對(duì)象。
自動(dòng)機(jī)器學(xué)習(xí)綜述
Google CloudML
TPOT是用于自動(dòng)化機(jī)器學(xué)習(xí)的Python庫(kù),它利用遺傳編程優(yōu)化機(jī)器學(xué)習(xí)管道。ML管道包括數(shù)據(jù)清理、特征選擇、特征預(yù)處理、特征構(gòu)建、模型選擇和參數(shù)優(yōu)化。TPOT庫(kù)利用了scikit-learn中可用的機(jī)器學(xué)習(xí)庫(kù)。
TPOT Machine Learning Pipeline
Amazon Sage Maker提供了建模、培訓(xùn)和部署的能力。它可以自動(dòng)調(diào)整算法,為了做到這一點(diǎn),它使用了一種叫做貝葉斯優(yōu)化的技術(shù)。
HyperDrive是微軟的產(chǎn)品,是為全面的超參數(shù)探索而建立的。超參數(shù)搜索空間可以用隨機(jī)搜索、網(wǎng)格搜索或貝葉斯優(yōu)化來(lái)覆蓋。它實(shí)現(xiàn)了一個(gè)調(diào)度器列表,您可以選擇通過(guò)聯(lián)合優(yōu)化質(zhì)量和成本來(lái)提前終止探索階段。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)選擇
在機(jī)器學(xué)習(xí)的世界中,最乏味的任務(wù)之一就是設(shè)計(jì)和構(gòu)建神經(jīng)網(wǎng)絡(luò)架構(gòu)。通常情況下,人們會(huì)花費(fèi)數(shù)小時(shí)或數(shù)天的時(shí)間嘗試使用不同的超參數(shù)迭代不同的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),以?xún)?yōu)化手頭任務(wù)的目標(biāo)函數(shù)。這非常耗時(shí),而且容易出錯(cuò)。「谷歌引入了利用進(jìn)化算法和強(qiáng)化學(xué)習(xí)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)搜索的思想」,以設(shè)計(jì)和尋找最優(yōu)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。本質(zhì)上,這是在訓(xùn)練創(chuàng)建一個(gè)層,然后堆疊這些層來(lái)創(chuàng)建一個(gè)深層的神經(jīng)網(wǎng)絡(luò)架構(gòu)。近年來(lái),這一領(lǐng)域的研究引起了廣泛關(guān)注,并提出了許多研究論文。
展開(kāi)