0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

這8個NumPy函數(shù)可以解決90%的常見問題

冬至子 ? 來源:alimejor ? 作者:alimejor ? 2023-06-01 17:42 ? 次閱讀

Numpy快速而高效的原因是底層的C代碼,這比使用Python進(jìn)行數(shù)組的操作要快上幾百倍,并且隨著數(shù)據(jù)量級的上升而上升。

本文中整理了一些可以解決常見問題的主要的NumPy函數(shù)。

1、創(chuàng)建數(shù)組

numpy.array:創(chuàng)建新的NumPy數(shù)組

# Create an array using np.array()
 arr = np.array([1, 2, 3, 4, 5])
 
 print(arr)
 Ouput: [1 2 3 4 5]

numpy.zeros:創(chuàng)建一個以零填充的數(shù)組。

# Create a 2-dimensional array of zeros
 arr = np.zeros((3, 4))
 
 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

類似的還有numpy.ones:創(chuàng)建一個都是1的數(shù)組 / numpy.empty:在不初始化數(shù)組元素的情況下創(chuàng)建數(shù)組。

使用numpy.random:生成隨機(jī)數(shù)組的函數(shù)。

# Generate a random integer between 0 and 9
 rand_int = np.random.randint(10)
 print(rand_int)

numpy.linspace:在指定范圍內(nèi)生成均勻間隔的數(shù)字。

# Generate an array of 5 values from 0 to 10 (inclusive)
 arr = np.linspace(0, 10, 5)
 
 # Print the array
 print(arr)
 [ 0.   2.5  5.   7.5 10. ]

numpy.range:用間隔的值創(chuàng)建數(shù)組。

# Generate an array from 0 to 10 (exclusive) with step size 1
 arr = np.arange(0, 10, 2)
 
 # Print the array
 print(arr)
 [1 3 5 7 9]

2、查看數(shù)組信息

numpy.shape:返回一個表示數(shù)組形狀的元組。

numpy.ndim:返回數(shù)組的維度數(shù)。

numpy.dtype:獲取數(shù)組中元素的數(shù)據(jù)類型??梢允莍nt型,float型,bool型等等。

3、數(shù)組操作函數(shù)

numpy.reshape:改變數(shù)組的形狀。

# Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5, 6])
 
 # Reshape the array to a 2x3 matrix
 reshaped_arr = np.reshape(arr, (2, 3))
 
 [[1 2 3]
  [4 5 6]]

numpy.transpose:用于排列數(shù)組的維度。它返回一個軸調(diào)換后的新數(shù)組。

# Create a 2-dimensional array
 arr = np.array([[1, 2, 3],
                 [4, 5, 6]])
 
 # Transpose the array
 transposed_arr = np.transpose(arr)
 [[1 4]
  [2 5]
  [3 6]]

numpy.concatate:沿現(xiàn)有軸連接數(shù)組。

# Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Concatenate the arrays along axis 0 (default)
 concatenated_arr = np.concatenate((arr1, arr2))
 [1 2 3 4 5 6]

numpy.split:分割數(shù)據(jù),numpy.resize:改變數(shù)組的形狀和大小。

numpy.vstack:將多個數(shù)組垂直堆疊以創(chuàng)建一個新數(shù)組。

# Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Vertically stack the arrays
 stacked_arr = np.vstack((arr1, arr2))
 [[1 2 3]
  [4 5 6]]

numpy.hstack:與vstack類似,但是是水平堆疊數(shù)組。

4、數(shù)學(xué)函數(shù)

numpy.sum:計算數(shù)組元素的和。

numpy.mean:計算數(shù)組的算術(shù)平均值。

numpy.max:返回數(shù)組中的最大值。

numpy.min:返回數(shù)組中的最小值。

numpy.abs:計算元素的絕對值。

numpy.exp:計算所有元素的指數(shù)。

numpy.subtract: 對兩個數(shù)組的對應(yīng)元素進(jìn)行減法運(yùn)算。

numpy.multiply: 對兩個數(shù)組的對應(yīng)元素進(jìn)行乘法運(yùn)算。

numpy.divide: 對兩個數(shù)組的對應(yīng)元素進(jìn)行除法運(yùn)算。

numpy.sin: 計算數(shù)組中每個元素的正弦值。

numpy.cos: 計算數(shù)組中每個元素的余弦值。

numpy.log: 計算數(shù)組中每個元素的自然對數(shù)(以e為底的對數(shù))。

5、統(tǒng)計函數(shù)

numpy.std:計算數(shù)組的標(biāo)準(zhǔn)差。

# Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5])
 
 # Compute the standard deviation of the array
 std = np.std(arr)
 1.4142135623730951

numpy.var:計算數(shù)組的方差。

numpy.histogram:計算一組數(shù)據(jù)的直方圖。

numpy.percentile:計算數(shù)組的第n個百分位數(shù)。它返回低于給定百分比的數(shù)據(jù)的值。

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
 
 # Calculate the 50th percentile (median) of the data
 median = np.percentile(data, 50)
 
 # Calculate the 25th and 75th percentiles (quartiles) of the data
 q1 = np.percentile(data, 25)
 q3 = np.percentile(data, 75)
 
 Median: 5.5
 Q1: 3.25
 Q3: 7.75

numpy.corcoef:計算兩個數(shù)組之間的相關(guān)系數(shù)。numpy.mean: 計算數(shù)組元素的平均值。numpy.median: 計算數(shù)組元素的中位數(shù)。

numpy.random.rand:在區(qū)間[0,1]內(nèi)從均勻分布生成隨機(jī)數(shù)數(shù)組

# Generate a 1-dimensional array of random numbers
 random_array = np.random.rand(5)
 [0.35463311 0.67659889 0.5865293  0.77127035 0.13949178]

numpy.random.normal:從正態(tài)(高斯)分布生成隨機(jī)數(shù)

# Generate a random number from a normal distribution
 random_number = np.random.normal()
 -0.6532785285205665

6、線性代數(shù)函數(shù)

numpy.dot:計算兩個數(shù)組的點(diǎn)積。

# Create two arrays
 a = np.array([1, 2, 3])
 b = np.array([4, 5, 6])
 
 # Compute the dot product of the arrays
 dot_product = np.dot(a, b)
 
 32

numpy.linalg.inv:計算一個方陣的逆, numpy.linalg.eig:一個方陣的特征值和特征向量。numpy.linalg.solve:求解一個線性方程組。

7、排序函數(shù)

numpy.sort:沿指定軸返回數(shù)組的排序副本

# Create a 2D array
 arr = np.array([[3, 1, 5], [2, 4, 6]])
 
 # Sort the array along the second axis (columns)
 sorted_arr = np.sort(arr, axis=1)
 
 [[1 3 5]
  [2 4 6]]

numpy.argsort:返回按升序?qū)?shù)組排序的索引

# Create an array
 arr = np.array([3, 1, 5, 2, 4])
 
 # Get the indices that would sort the array
 sorted_indices = np.argsort(arr)
 
 [1 3 0 4 2]

8、其他一些高級的函數(shù)

numpy.unique:在數(shù)組中查找唯一的元素。

arr = np.array([2, 1, 3, 2, 1, 4, 5, 4])
 
 # Get the unique elements of the array
 unique_values = np.unique(arr)
 [1 2 3 4 5]

numpy.fft:傅里葉變換的函數(shù)。

numpy.ma:供對掩碼數(shù)組的支持。

  • numpy.ma.array:從現(xiàn)有的數(shù)組或序列創(chuàng)建一個掩碼數(shù)組。
  • numpy.ma.masked_array:從現(xiàn)有數(shù)組和掩碼中創(chuàng)建一個掩碼數(shù)組。
  • numpy.ma.mask:表示掩碼數(shù)組中的掩碼值。
  • numpy.ma.masked_invalid:屏蔽數(shù)組中無效的(NaN, Inf)元素。
  • numpy.ma.masked_greate, numpy.ma.masked_less:掩碼大于或小于給定值的元素。
arr = np.array([1, 2, 3, np.nan, 5])
 
 # Create a masked array by masking the invalid values
 masked_arr = ma.masked_invalid(arr)
 [1 2 3 5]

numpy.apply_along_axis:沿著數(shù)組的特定軸應(yīng)用函數(shù)。

numpy.wheres:一個條件函數(shù),根據(jù)給定條件返回數(shù)組中滿足條件的元素的索引或值。

condition = np.array([True, False, True, False])
 
 # Create two arrays
 array_true = np.array([1, 2, 3, 4])
 array_false = np.array([5, 6, 7, 8])
 
 result = np.where(condition, array_true, array_false)
 
 [1 6 3 8]

以上就是Numpy最經(jīng)常被使用的函數(shù),希望對你有所幫助。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7185

    瀏覽量

    87198
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84098
  • 傅里葉變換
    +關(guān)注

    關(guān)注

    6

    文章

    426

    瀏覽量

    42488
收藏 人收藏

    評論

    相關(guān)推薦

    90電氣技術(shù)常見問題及解答

    90電氣技術(shù)常見問題及解答
    的頭像 發(fā)表于 11-26 09:11 ?3.4w次閱讀

    利用Numba編寫快速NumPy函數(shù)

    《利用Python進(jìn)行數(shù)據(jù)分析》 附錄 A7 使用Numba編寫快速NumPy函數(shù)
    發(fā)表于 04-07 06:31

    matlab常見問題

    matlab常見問題集 matlab安裝、運(yùn)行與其他問題集錦Q1:matlab有沒有監(jiān)視內(nèi)存的方法?A: 用函數(shù)whos。 Q2:如何
    發(fā)表于 06-18 14:52 ?2098次閱讀

    Keil編譯常見問題

    吳鑒鷹總結(jié)的Keil 編譯常見問題,吳鑒鷹總結(jié)的Keil 編譯常見問題。
    發(fā)表于 07-22 15:31 ?10次下載

    AutoCAD應(yīng)用技巧與常見問題

    AutoCAD應(yīng)用技巧與常見問題,感興趣的小伙伴們可以看一看。
    發(fā)表于 09-18 14:55 ?0次下載

    基于495C語言常見問題

    基于495C語言常見問題
    發(fā)表于 10-13 10:18 ?2次下載
    基于495<b class='flag-5'>個</b>C語言<b class='flag-5'>常見問題</b>集

    靈活運(yùn)用Python中numpy庫的矩陣運(yùn)算

    ([1,2,3]); a1=mat(a1); 創(chuàng)建常見的矩陣 data1=mat(zeros((3,3))); #創(chuàng)建一3*3的零矩陣,矩陣這里zeros函數(shù)的參數(shù)是一tuple類
    發(fā)表于 11-15 20:07 ?2269次閱讀

    電氣二次常見問題有哪些_40電氣二次常見問題盤點(diǎn)

    本文主要介紹的是電氣二次常見問題,首先介紹了電氣二次原理圖,其次盤點(diǎn)了40電氣二次常見問題,具體的跟隨小編一起來了解一下。
    發(fā)表于 05-31 16:51 ?5282次閱讀
    電氣二次<b class='flag-5'>常見問題</b>有哪些_40<b class='flag-5'>個</b>電氣二次<b class='flag-5'>常見問題</b>盤點(diǎn)

    labview有哪些常見問題?labview三常見問題和解決方法概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是labview有哪些常見問題?labview三常見問題和解決方法概述三常見問題是:1.labview在運(yùn)行后
    發(fā)表于 09-18 18:53 ?0次下載

    灰塵網(wǎng)絡(luò)常見問題

    灰塵網(wǎng)絡(luò)常見問題
    發(fā)表于 04-28 15:08 ?8次下載
    灰塵網(wǎng)絡(luò)<b class='flag-5'>常見問題</b>

    解讀12 種 Numpy 和 Pandas 高效函數(shù)技巧

    本文分享給大家 12 種 Numpy 和 Pandas 函數(shù),這些高效的函數(shù)會令數(shù)據(jù)分析更為容易、便捷。最后,讀者也可以在 GitHub 項(xiàng)目中找到本文所用代碼的 Jupyter No
    的頭像 發(fā)表于 06-29 17:05 ?1420次閱讀

    隔離信號和電源的4常見問題

    隔離信號和電源的4常見問題
    發(fā)表于 10-28 12:00 ?1次下載
    隔離信號和電源的4<b class='flag-5'>個</b><b class='flag-5'>常見問題</b>

    互聯(lián)車輛如何處理數(shù)據(jù):3常見問題

    互聯(lián)車輛如何處理數(shù)據(jù):3常見問題
    發(fā)表于 10-31 08:23 ?0次下載
    互聯(lián)車輛如何處理數(shù)據(jù):3<b class='flag-5'>個</b><b class='flag-5'>常見問題</b>

    FPGA/CPLD設(shè)計的8常見問題

    數(shù)據(jù)接口的同步是 FPGA/CPLD 設(shè)計的一常見問題,也是一重點(diǎn)和難點(diǎn),很多設(shè)計不穩(wěn)定都是源于數(shù)據(jù)接口的同步有問題。在電路圖設(shè)計階段,一些工程師手工加入 BUFT 或者非門調(diào)整數(shù)據(jù)延遲,從而保證本級模塊的時鐘對上級模塊數(shù)據(jù)
    發(fā)表于 12-01 09:38 ?1011次閱讀

    OpenSSL安裝常見問題

    OpenSSL安裝常見問題
    的頭像 發(fā)表于 07-07 11:17 ?744次閱讀
    OpenSSL安裝<b class='flag-5'>常見問題</b>