成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Numpy怎么使用最高效,5個技巧送給你!

開發 后端
本文作者將分享 5 個優雅的 Python Numpy 函數,有助于高效、簡潔的數據處理。

在 reshape 函數中使用參數-1

Numpy 允許我們根據給定的新形狀重塑矩陣,新形狀應該和原形狀兼容。有意思的是,我們可以將新形狀中的一個參數賦值為-1。這僅僅表明它是一個未知的維度,我們希望 Numpy 來算出這個未知的維度應該是多少:Numpy 將通過查看數組的長度和剩余維度來確保它滿足上述標準。讓我們來看以下例子: 

維度為-1 的不同 reshape 操作圖示。 

  1. a = np.array([[1, 2, 3, 4],  
  2.               [5, 6, 7, 8]])  
  3. a.shape  
  4. (2, 4) 

假設我們給定行參數為 1,列參數為-1,那么 Numpy 將計算出 reshape 后的列數為 8。 

  1. a.reshape(1,-1)  
  2. array([[1, 2, 3, 4, 5, 6, 7, 8]]) 

假設我們給定行參數為-1,列參數為 1,那么 Numpy 將計算出 reshape 后的行數為 8。 

  1. a.reshape(-1,1)  
  2. array([[1],  
  3.        [2],  
  4.        [3],  
  5.        [4],  
  6.        [5],  
  7.        [6],  
  8.        [7],  
  9.        [8]]) 

下面的代碼也是一樣的道理。 

  1. a.reshape(-1,4)  
  2. array([[1, 2, 3, 4],  
  3.        [5, 6, 7, 8]])a.reshape(-1,2)  
  4. array([[1, 2],  
  5.        [3, 4],  
  6.        [5, 6],  
  7.        [7, 8]])a.reshape(2,-1)  
  8. array([[1, 2, 3, 4],  
  9.        [5, 6, 7, 8]])a.reshape(4,-1)  
  10. array([[1, 2],  
  11.        [3, 4],  
  12.        [5, 6],  
  13.        [7, 8]]) 

這也適用于任何更高維度張量的 reshape,但是只有一個維度的參數能賦值為-1。 

  1. a.reshape(2,2,-1)  
  2. array([[[1, 2],  
  3.         [3, 4]],  
  4.        [[5, 6],  
  5.         [7, 8]]])a.reshape(2,-1,1)  
  6. array([[[1],  
  7.         [2],  
  8.         [3],  
  9.         [4]],   
  10.        [[5],  
  11.         [6],  
  12.         [7],  
  13.         [8]]]) 

如果我們嘗試 reshape 不兼容的形狀或者是給定的未知維度參數多于 1 個,那么將會報錯。 

  1. a.reshape(-1,-1)  
  2. ValueError: can only specify one unknown dimensiona.reshape(3,-1)  
  3. ValueError: cannot reshape array of size 8 into shape (3,newaxis) 

總而言之,當試圖對一個張量進行 reshape 操作時,新的形狀必須包含與舊的形狀相同數量的元素,這意味著兩個形狀的維度乘積必須相等。當使用 -1 參數時,與-1 相對應的維數將是原始數組的維數除以新形狀中已給出維數的乘積,以便維持相同數量的元素。

Argpartition:在數組中找到最大的 N 個元素。

Numpy 的 argpartion 函數可以高效地找到 N 個最大值的索引并返回 N 個值。在給出索引后,我們可以根據需要進行值排序。 

  1. array = np.array([10, 7, 4, 3, 2, 2, 5, 9, 0, 4, 6, 0])index = np.argpartition*(array, -5)[-5:]  
  2. index  
  3. array([ 6,  1, 10,  7,  0], dtype=int64)np.sort(array[index])  
  4. array([ 5,  6,  7,  9, 10]) 

Clip:如何使數組中的值保持在一定區間內

在很多數據處理和算法中(比如強化學習中的 PPO),我們需要使得所有的值保持在一個上下限區間內。Numpy 內置的 Clip 函數可以解決這個問題。Numpy clip () 函數用于對數組中的值進行限制。給定一個區間范圍,區間范圍外的值將被截斷到區間的邊界上。例如,如果指定的區間是 [-1,1],小于-1 的值將變為-1,而大于 1 的值將變為 1。

Clip 示例:限制數組中的最小值為 2,最大值為 6。 

  1. #Example-1  
  2. array = np.array([10, 7, 4, 3, 2, 2, 5, 9, 0, 4, 6, 0])  
  3. print (np.clip(array,2,6))[6 6 4 3 2 2 5 6 2 4 6 2]#Example-2  
  4. array = np.array([10, -1, 4, -3, 2, 2, 5, 9, 0, 4, 6, 0])  
  5. print (np.clip(array,2,5))[5 2 4 2 2 2 5 5 2 4 5 2] 

Extract:從數組中提取符合條件的元素

我們可以使用 Numpy extract () 函數從數組中提取符合條件的特定元素。

 

  1. arr = np.arange(10)  
  2. arrarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# Define the codition, here we take MOD 3 if zero  
  3. condition = np.mod(arr, 3)==0  
  4. conditionarray([ True, False, False,  True, False, False,  True, False, False,True])np.extract(condition, arr) 
  5. array([0, 3, 6, 9]) 

同樣地,如果有需要,我們可以用 AND 和 OR 組合的直接條件,如下所示:

  1. np.extract(((arr > 2) & (arr < 8)), arr)array([3, 4, 5, 6, 7]) 

setdiff1d:如何找到僅在 A 數組中有而 B 數組沒有的元素

返回數組中不在另一個數組中的獨有元素。這等價于兩個數組元素集合的差集。

 

  1. a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])  
  2. b = np.array([3,4,7,6,7,8,11,12,14])  
  3. c = np.setdiff1d(a,b)  
  4. carray([1, 2, 5, 9]) 

小結

以上 5 個 Numpy 函數并不經常被社區使用,但是它們非常簡潔和優雅。在我看來,我們應該盡可能在出現類似情況時使用這些函數,不僅因為代碼量更少,更因為它們是解決復雜問題的絕妙方法。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2018-05-04 09:14:09

Git技巧shell命令

2018-06-16 08:35:57

UnixLinux命令

2021-09-13 07:46:06

Kubectl Kubernetes 工具

2021-07-07 09:50:23

NumpyPandasPython

2021-09-12 17:23:57

canvas動畫函數

2009-10-27 09:09:06

Eclipse技巧

2019-02-11 11:16:13

2021-02-14 19:24:45

SpringRegistrar對象

2017-06-05 12:06:00

2023-03-29 07:45:58

VS編輯區編程工具

2018-06-20 11:00:06

云應用開發PaaS

2011-09-25 10:46:18

云計算安全

2021-12-09 23:24:56

勒索軟件攻擊網絡安全

2019-08-14 09:43:12

開發技能代碼

2017-10-23 16:28:33

2022-02-24 10:05:20

Python編程語言代碼

2019-03-19 13:44:41

Python編程技巧編程語言

2021-02-19 10:59:29

NumpyPandasPython

2024-11-07 15:55:22

PyTorchNumPyPython

2022-05-04 12:44:57

Python編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品高潮呻吟久久av黑人 | 久久久精品黄色 | 久久成人av电影 | 超碰人人91 | 亚洲香蕉在线视频 | 国产91在线精品 | a视频在线 | 精品日韩一区 | 国产精品永久免费视频 | 日韩欧美专区 | 国产偷录视频叫床高潮对白 | 91视频网址 | 91毛片网 | 精品国产91久久久久久 | 99爱国产| 欧美综合一区二区三区 | 99精品免费视频 | 羞羞色网站 | 一a级片 | 一区二区三区国产在线观看 | 999久久久 | 国产成人精品一区二区三区网站观看 | 91在线观看免费 | 美女天堂在线 | 天天久久 | 亚洲视频一区在线观看 | 亚洲在线一区 | 一本一道久久a久久精品蜜桃 | 久久网站黄 | 性国产丰满麻豆videosex | 99精品国产一区二区青青牛奶 | 日韩亚洲视频 | 国产伦精品一区二区三区四区视频 | 国产精品久久久久国产a级 欧美日韩国产免费 | 亚洲国产在 | 奇米四色在线观看 | 一区在线播放 | 91国产精品在线 | h片在线观看网站 | 国产精品毛片无码 | 亚洲精品一区二区在线观看 |