導航:首頁 > 編程語言 > python數據單位統一減小

python數據單位統一減小

發布時間:2024-05-20 12:26:58

python氣象數據處理進階之Xarray(6):數據重組與換形

這一部分涉及到了常用的操作,比如調換維度的位置,給數據重新reshape換形等等,建議大家可以認真閱讀這部分。
老樣子,先新建一個數組

比如說在求某個東西時需要將時間維放在最後一維,但是數據本身的時間在第一維,那麼便可以用到這個操作。
第一種是精準換位,指定每個維度的位置

第二種是單獨換位,只對指定維度換位,將time放在最後,其餘不變

第三種為全部換位,相當於數組轉置

擴展指增加一個維度,壓縮指將一個維度擠壓掉

官方文檔中接下來有一段是關於DataArray向DataSet轉換的,個人感覺放在這一章節並不合理,我後邊會整理放進Python氣象數據處理進階之Xarray(1)中(我覺得兩種基礎數據結構以及互相轉換應該最開始介紹的)。所以接下來跳過這部分。

個人感覺可能處理站點數據會用到這個方法
換一個數組演示

現在將這個2維數組堆疊成1維

也可以拆分,其實就是反堆疊

最重要的是不同於Pandas,Xarray的stack不缺自動丟失缺測值!!!
Xarray還提供了將不同變數stack的例子,有興趣的可以去看看。這個用法感覺比較雞肋

這塊比較難理解,建議還是先讀第一篇文章,弄清數據結構,da數組顯示Dimensions without coordinates: x,而通過da.set_index函數,將X設置為混合索引號。
之後便可以實線自由索引:

通過mda.reset_index('x')重置。
reorder_levels()函數允許調換索引順序(個人感覺比較雞肋)

這小節應該是這篇文章和數組換形換維同等重要的。

這就是對數組進行滾動。這個的作用主要在於做差分計算。雖然前邊講過Xarray提供了中央差計算函數,但是仍需要更靈活的操作,滾動函數就實現了這個目的。

⑵ 優化Python編程的4個妙招

1. Pandas.apply() – 特徵工程瑰寶



Pandas 庫已經非常優化了,但是大部分人都沒有發揮它的最大作用。想想它一般會用於數據科學項目中的哪些地方。一般首先能想到的就是特徵工程,即用已有特徵創造新特徵。其中最高效的方法之一就是Pandas.apply(),即Pandas中的apply函數。



在Pandas.apply()中,可以傳遞用戶定義功能並將其應用到Pandas Series的所有數據點中。這個函數是Pandas庫最好的擴展功能之一,它能根據所需條件分隔數據。之後便能將其有效應用到數據處理任務中。



2. Pandas.DataFrame.loc – Python數據操作絕妙技巧



所有和數據處理打交道的數據科學家(差不多所有人了!)都應該學會這個方法。



很多時候,數據科學家需要根據一些條件更新數據集中某列的某些值。Pandas.DataFrame.loc就是此類問題最優的解決方法。



3. Python函數向量化



另一種解決緩慢循環的方法就是將函數向量化。這意味著新建函數會應用於輸入列表,並返回結果數組。在Python中使用向量化能至少迭代兩次,從而加速計算。



事實上,這樣不僅能加速代碼運算,還能讓代碼更加簡潔清晰。



4. Python多重處理



多重處理能使系統同時支持一個以上的處理器。



此處將數據處理分成多個任務,讓它們各自獨立運行。處理龐大的數據集時,即使是apply函數也顯得有些遲緩。



關於優化Python編程的4個妙招,青藤小編就和您分享到這里了。如果您對python編程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於python編程的技巧及素材等內容,可以點擊本站的其他文章進行學習。

⑶ 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中常見的數據結構可以統稱為容器(container)。序列(如列表和元組)、映射(如字典)以及集合(set)是三類主要的容器。而扁平序列如str、bytes、bytearray、memoryview 和 array.array等不在這篇文章的討論范圍內。

在此,我們先從元組開始說起。

元組區別於列表的顯著特徵之一就是它不能被修改,但其另外一個作用就是 用於沒有欄位名的記錄 [1] 。因為後者經常被忽略,我們先來看看元組作為記錄的作用。

使用括弧就可以定義一個元組。元組中的每個元素都存放了記錄中一個欄位的數據,外加這個欄位的位置。正是這個位置信息給數據賦予了意義。下面的例子中,元組就被當作記錄加以利用:

輸出為:

上述for循環中的操作提取了元組中的元素,也叫作拆包(unpacking)。平行賦值是對元組拆包很好的應用,示例如下:

還有一個經典而優雅的應用是交換變數的值:

用 * 運算符把一個可迭代對象拆開作為函數的參數,例如Python的內置函數pmod接收兩個數字類型的參數,返回商和余數。以下範例將使用 * 將元組傳入函數。

輸出為:

有些函數有多個返回值,將其賦給一個變數時,變數類型即是元組:

輸出為:

zip是Python的內置函數,能夠接收兩個或多個序列,並組成一個元組列表,在Python3中會返回一個迭代器,如下所示:

輸出為:

元組當然也支持一些常規操作,如對於元組 a = (1, 'y', 5, 5, 'x') :

上述內容不僅涵蓋了元組的基本操作,同時也結合了實際工作中常搭配使用的其他函數、運算符等。在回顧這些知識時主要參考了兩本經典的Python編程書籍:《流暢的Python》和《像計算機科學家一樣思考Python》,有興趣的朋友可以深入閱讀!

希望這篇文章對你有幫助,下回將總結Python列表的使用技巧。

[1]《流暢的Python》: https://book.douban.com/subject/27028517/

⑸ 如何提高python的計算精度

1.round()內置方法

round()如果只有一個數作為參數,不指定位數的時候,返回的是一個整數,而且是最靠近的整數(這點上類似四捨五入)。但是當出現.5的時候,兩邊的距離都一樣,round()取靠近的偶數,這就是為什麼round(2.5) = 2。當指定取捨的小數點位數的時候,一般情況也是使用四捨五入的規則,但是碰到.5的這樣情況,如果要取捨的位數前的小樹是奇數,則直接舍棄,如果偶數這向上取捨。看下面的示例:

>>>round(2.635,2)2.63>>>round(2.645,2)2.65>>>round(2.655,2)2.65>>>round(2.665,2)2.67>>>round(2.675,2)2.67

2. 使用格式化(效果和round()是一樣的。)

>>> a=("%.2f"%2.635)>>> a'2.63'>>> a=("%.2f"%2.645)>>> a'2.65'>>> a=int(2.5)>>> a2

閱讀全文

與python數據單位統一減小相關的資料

熱點內容
壓縮干糧圖片 瀏覽:836
怎麼看網站被加密的視頻 瀏覽:846
哪個app可以弄會動的照片模板 瀏覽:272
如何關閉電腦的時鍾源伺服器 瀏覽:902
adb命令設置主屏幕應用 瀏覽:990
編譯後的bak文件 瀏覽:259
php生成文件名 瀏覽:880
日照智能車輛移動機器人導航演算法 瀏覽:115
解壓力的食療 瀏覽:125
密鑰如何加密隨機數 瀏覽:381
統計學中pre的演算法 瀏覽:411
inline函數在編譯時不做類型檢查 瀏覽:268
經緯度查詢android 瀏覽:762
vivoz5x方舟怎麼進伺服器 瀏覽:498
vivox50安卓微信人臉支付怎麼開啟 瀏覽:895
cmd退出python命令 瀏覽:533
恢復u盤加密隱藏的文件 瀏覽:923
對某個人加密應該用公鑰 瀏覽:1000
機頂盒中央1加密 瀏覽:97
單片機的出現有什麼影響 瀏覽:231