日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据

發布時間:2023/12/3 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

矢量化

NumPy數組可以將許多數據處理任務表述為簡潔的數組表達式,否則需要編寫循環。用數組表達式代替循環的做法,通常被稱為矢量化。通常矢量化數組運算要比等價的純Python方式快上一兩個數量級,尤其是各種數值計算。

假設我們想要在一組值(網格型)上計算函數sqrt(x^2 + y^2)。np.meshgrid()函數接受兩個一維數組,并產生兩個二維矩陣,對應于兩個數組中所有的(x, y)對。

points = np.arange(-5, 5, 0.01) #1000個間隔相等的點。xs, ys = np.meshgrid(points, points)z = np.sqrt(xs ** 2 + ys ** 2)

將條件邏輯表述為數組運算

  • np.where()函數是三元表達式 x if condition else y的矢量化版本。假設我們有一個布爾數組和兩個值數組:
  • 這有一些問題。第一,它對大數組的處理速度不是很快;第二,無法用于多維數組。若使用np.where(),則可以將該功能寫得非常簡潔。
  • np.where()的第二個和第三個參數不必是數組,也可以是標量值。where()通常用于根據另一個數組產生一個新的數組。
  • np.where()可以表述更加復雜的邏輯。
#Pythonresult = []for i in range(n): if cond1[i] and cond2[i]: result.append(0) elif cond1[i]: result.append(1) elif cond2[i]: result.append(2) else: result.append(3)?#NumPynp.where(cond1 & cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))?#利用布爾值在計算過程中可以被當做0或1處理result = 1 * (con1 - cond2) + 2 * (con2 & -cond1) + 3 * -(cond1 | cond2)

數學和統計方法

用于布爾型數組的方法

  • 在使用基本統計方法時,布爾值會被強制轉換為1和0,因此sum經常被用來對布爾型數據中的True值計數。
  • 另外還有兩個方法any()和all(),它們對布爾型數組非常有用。any()用于測試數組中是否存在一個或多個True,而all()則檢查數組中所有制是否都是True,兩個方法均返回布爾值結果。這兩個方法也可用于非布爾型數組,所有非0元素均會被當作True。

排序

  • 與Python內置的列表類型一樣,NumPy數組也可以通過sort方法就地排序(會對原數組進行操作)。
  • 多維數組可以在任何一個軸向上進行排序,只需將軸編號傳給sort即可。
  • 頂級方法np.sort()返回的是數組的已排序副本,而就地排序則會修改數組本身。計算數組分位數最簡單的方法是對其進行排序,然后取特定位置的值:

唯一化以及其他的集合邏輯。

  • NumPy提供了一些針對一維ndarray()的基本集合運算,最常用的可能要數np.unique()了,它用于找出數組中的唯一值并返回已排序的結果。
  • 拿跟np.unique()等價的純Python代碼對比一下:
  • 另一個函數np.in1d()用于測試一個數組中的值在另一個數組中的成員資格,返回一個布爾型數組:

總結

以上是生活随笔為你收集整理的python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。