㈠ python實現對CSV文件多維不同單位數據的歸一化處理
1)線性歸一化
這種歸一化比較適用在數值比較集中的情況,缺陷就是如果max和min不穩定,很容易使得歸一化結果不穩定,使得後續的效果不穩定,實際使用中可以用經驗常量來代替max和min。
2)標准差標准化
經過處理的數據符合標准正態分布,即均值為0,標准差為1。
3)非線性歸一化
經常用在數據分化較大的場景,有些數值大,有些很小。通過一些數學函數,將原始值進行映射。該方法包括log、指數、反正切等。需要根據數據分布的情況,決定非線性函數的曲線。
log函數:x = lg(x)/lg(max)
反正切函數:x = atan(x)*2/pi
Python實現
線性歸一化
定義數組:x = numpy.array(x)
獲取二維數組列方向的最大值:x.max(axis = 0)
獲取二維數組列方向的最小值:x.min(axis = 0)
對二維數組進行線性歸一化:
def max_min_normalization(data_value, data_col_max_values, data_col_min_values):
""" Data normalization using max value and min value
Args:
data_value: The data to be normalized
data_col_max_values: The maximum value of data's columns
data_col_min_values: The minimum value of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value[i][j] = \
(data_value[i][j] - data_col_min_values[j]) / \
(data_col_max_values[j] - data_col_min_values[j])
標准差歸一化
定義數組:x = numpy.array(x)
獲取二維數組列方向的均值:x.mean(axis = 0)
獲取二維數組列方向的標准差:x.std(axis = 0)
對二維數組進行標准差歸一化:
def standard_deviation_normalization(data_value, data_col_means,
data_col_standard_deviation):
""" Data normalization using standard deviation
Args:
data_value: The data to be normalized
data_col_means: The means of data's columns
data_col_standard_deviation: The variance of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value[i][j] = \
(data_value[i][j] - data_col_means[j]) / \
data_col_standard_deviation[j]
非線性歸一化(以lg為例)
定義數組:x = numpy.array(x)
獲取二維數組列方向的最大值:x.max(axis=0)
獲取二維數組每個元素的lg值:numpy.log10(x)
獲取二維數組列方向的最大值的lg值:numpy.log10(x.max(axis=0))
對二維數組使用lg進行非線性歸一化:
def nonlinearity_normalization_lg(data_value_after_lg,
data_col_max_values_after_lg):
""" Data normalization using lg
Args:
data_value_after_lg: The data to be normalized
data_col_max_values_after_lg: The maximum value of data's columns
"""
data_shape = data_value_after_lg.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value_after_lg[i][j] = \
data_value_after_lg[i][j] / data_col_max_values_after_lg[j]
㈡ 如何用Python畫各種著名數學圖案
如何用Python畫各種著名數學圖案 | 附圖+代碼
用Python繪制著名的數學圖片或動畫,展示數學中的演算法魅力。
Mandelbrot 集
'''
A fast Mandelbrot set wallpaper renderer
reddit discussion:
'''
importnumpy asnp
fromPILimportImage
fromnumba importjit
MAXITERS=200
RADIUS=100
@jit
defcolor(z, i):
v =np.log2(i +1-np.log2(np.log2(abs(z)))) /5
ifv <1.0:
returnv**4, v**2.5, v
else:
v =max(0, 2-v)
returnv, v**1.5, v**3
@jit
defiterate(c):
z =0j
fori inrange(MAXITERS):
ifz.real*z.real +z.imag*z.imag >RADIUS:
returncolor(z, i)
z =z*z +c
return0, 0,0
defmain(xmin, xmax, ymin, ymax, width, height):
x =np.linspace(xmin, xmax, width)
y =np.linspace(ymax, ymin, height)
z =x[None, :] +y[:, None]*1j
red, green, blue =np.asarray(np.frompyfunc(iterate, 1, 3)(z)).astype(np.float)
img =np.dstack((red, green, blue))
Image.fromarray(np.uint8(img*255)).save('mandelbrot.png')
if__name__=='__main__':
main(-2.1, 0.8, -1.16, 1.16, 1200, 960)
㈢ 怎麼用numpy計算債券到期收益率
1、NumPy中的diff函數可以返回一個由相鄰數組元素的差值構成的數組。不過需要注意的是,diff返回的數組比收盤價數組少一個元素。2、對數收益率計算起來甚至更簡單一些。我們先用log函數得到每一個收盤價的對數,再對結果使用diff函數即可。一般情況下,我們應該檢查輸入數組以確保不含有零和負數。3、股票波動率是對價格變動的一種衡量。計算波動率(年波動率和月波動率)時,需要用到對數波動率。 年波動率等於對數波動率的標准差除以其均值,再除以交易日倒數的平方根,通常交易日取252天。
㈣ Python含義解釋
Python(英國發音:/ˈpaɪθən/美國發音:ˈpaɪθɑːn/),是一種面向對象的解釋型計算機程序設計語言,由荷蘭人GuidovanRossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體,源代碼和解釋器CPython遵GPL(GNUGeneralPublicLicense)協議。Python語法簡潔清晰,特色之一是強制用空白符(whitespace)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
㈤ python里怎模對復數取對數log,對矩陣實現log以3為底,怎麼做
#coding=utf-8
importmath
importnumpyasnp
#復數
aComplex=4.23+8.5j
#對復數的實數部分取對數
math.log(aComplex.real)
#對復數的虛數部分取對數
math.log(aComplex.imag)
#矩陣
aArray=np.array([1.0,2.0,3.0])
#對矩陣求log以3為底
foriinrange(len(aArray)):
aArray[i]=math.log(aArray[i],3)
㈥ Python 怎樣寫一個函數使得返回值服從指數分布
不是服從指數分別, 你可以隨機出來十萬個數值, 然後繪制一下統計直方圖, 就能很明顯的看到了.
可以直接用
exprnd=random.expovariate
或者非要自己實現的話, 好好去推倒一下公式, 能發現其實是
defexprnd(mu):
return-1./mu*math.log(1-random.random())
㈦ 如何解決numpy安裝問題的RunTimeError問題
那是沒有安裝 log 相關的模塊 現在我不確定,你的系統詳情 不過很有可能載入的模塊是 twisted的log 命令應該是 from twisted.python import log 你試試先安裝Twisted 另外,請確定,在C編譯過程中 沒有錯誤 python setup.py build
㈧ Python中如何對series里所有的值取對數
以後應多使用論壇中的Eviews專區。
ln在Eviews中表示為log,如數學中的ln(Q)在Eviews中表示為log(Q)
直接定義啊 y=log(x) 在軟體中log,論文模型中ln不用取對數直接在估計的時候用 log( )就好了
如果真要取的話
quick\ generate series\
輸入新變數,比如 r=log( )
r就是取完對數後的序列
在工作文件中先定義一個新的變數Y(假設原變數是w,已存在的變數),然後在工作文件中點擊genr,在方程中輸入Y=log(w),確定。
series y=log(x)
在最小二乘裡面輸入log(y) log(x) c也可以
產生個新變數:輸入命令y=log()
㈨ python關於numpy基礎問題
Python發展至今,已經有越來越多的人使用python進行科學技術,NumPY是python中的一款高性能科學計算和數據分析的基礎包。
ndarray
ndarray(以下簡稱數組)是numpy的數組對象,需要注意的是,它是同構的,也就是說其中的所有元素必須是相同的類型。其中每個數組都有一個shape和dtype。
shape既是數組的形狀,比如
復制代碼
1 import numpy as np
2 from numpy.random import randn
3
4 arr = randn(12).reshape(3, 4)
5
6 arr
7
8 [[ 0.98655235 1.20830283 -0.72135183 0.40292924]
9 [-0.05059849 -0.02714873 -0.62775486 0.83222997]
10 [-0.84826071 -0.29484606 -0.76984902 0.09025059]]
11
12 arr.shape
13 (3, 4)
復制代碼
其中(3, 4)即代表arr是3行4列的數組,其中dtype為float64
一下函數可以用來創建數組
array將輸入數據轉換為ndarray,類型可制定也可默認
asarray將輸入轉換為ndarray
arange類似內置range
ones、ones_like根據形狀創建一個全1的數組、後者可以復制其他數組的形狀
zeros、zeros_like類似上面,全0
empty、empty_like創建新數組、只分配空間
eye、identity創建對角線為1的對角矩陣
數組的轉置和軸對稱
轉置是多維數組的基本運算之一。可以使用.T屬性或者transpose()來實現。.T就是進行軸對換而transpose則可以接收參數進行更豐富的變換
復制代碼
arr = np.arange(6).reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print arr.T
[[0 3]
[1 4]
[2 5]]
arr = np.arange(24).reshape((2,3,4))
print arr
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
print arr.transpose((0,1,2))
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
復制代碼
數組的運算
大小相等的數組之間做任何算術運算都會將運算應用到元素級別。
復制代碼
1 arr = np.arange(9).reshape(3, 3)
2 print arr
3
4 [[0 1 2]
5 [3 4 5]
6 [6 7 8]]
7
8 print arr*arr
9
10 [[ 0 1 4]
11 [ 9 16 25]
12 [36 49 64]]
13
14 print arr+arr
15
16 [[ 0 2 4]
17 [ 6 8 10]
18 [12 14 16]]
19
20 print arr*4
21
22 [[ 0 4 8]
23 [12 16 20]
24 [24 28 32]]
復制代碼
numpy的簡單計算中,ufunc通用函數是對數組中的數據執行元素級運算的函數。
如:
復制代碼
arr = np.arange(6).reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print np.square(arr)
[[ 0 1 4]
[ 9 16 25]]
復制代碼
類似的有:abs,fabs,sqrt,square,exp,log,sign,ceil,floor,rint,modf,isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh,
add,subtract,multiply,power,mod,equal,等等
㈩ 最受歡迎的 15 大 Python 庫有哪些
1、Pandas:是一個Python包,旨在通過「標記」和「關系」數據進行工作,簡單直觀。它設計用於快速簡單的數據操作、聚合和可視化,是數據整理的完美工具。
2、Numpy:是專門為Python中科學計算而設計的軟體集合,它為Python中的n維數組和矩陣的操作提供了大量有用的功能。該庫提供了NumPy數組類型的數學運算向量化,可以改善性能,從而加快執行速度。
3、SciPy:是一個工程和科學軟體庫,包含線性代數,優化,集成和統計的模塊。SciPy庫的主要功能是建立在NumPy上,通過其特定子模塊提供有效的數值常式,並作為數字積分、優化和其他常式。
4、Matplotlib:為輕松生成簡單而強大的可視化而量身定製,它使Python成為像MatLab或Mathematica這樣的科學工具的競爭對手。
5、Seaborn:主要關注統計模型的可視化(包括熱圖),Seaborn高度依賴於Matplotlib。
6、Bokeh:獨立於Matplotlib,主要焦點是交互性,它通過現代瀏覽器以數據驅動文檔的風格呈現。
7、Plotly:是一個基於Web用於構建可視化的工具箱,提供API給一些編程語言(Python在內)。
8、Scikits:是Scikits
Stack額外的軟體包,專為像圖像處理和機器學習輔助等特定功能而設計。它建立在SciPy之上,中集成了有質量的代碼和良好的文檔、簡單易用並且十分高效,是使用Python進行機器學習的實際行業標准。
9、Theano:是一個Python軟體包,它定義了與NumPy類似的多維數組,以及數學運算和表達式。此庫是被編譯的,可實現在所有架構上的高效運行。
10、TensorFlow:是數據流圖計算的開源庫,旨在滿足谷歌對訓練神經網路的高需求,並且是基於神經網路的機器學習系統DistBelief的繼任者,可以在大型數據集上快速訓練神經網路。
11、Keras:是一個用Python編寫的開源的庫,用於在高層的介面上構建神經網路。它簡單易懂,具有高級可擴展性。
12、NLTK:主要用於符號學和統計學自然語言處理(NLP) 的常見任務,旨在促進NLP及相關領域(語言學,認知科學人工智慧等)的教學和研究。
13、Gensim:是一個用於Python的開源庫,為有向量空間模型和主題模型的工作提供了使用工具。這個庫是為了高效處理大量文本而設計,不僅可以進行內存處理,還可以通過廣泛使用NumPy數據結構和SciPy操作來獲得更高的效率。