numpy的操作

来源:https://www.cnblogs.com/xshan/archive/2018/11/30/10046552.html
-Advertisement-
Play Games

1 import numpy as np 2 3 ######################## 4 # 索引 5 n1 = np.random.randint(0, 100, 10) 6 # print(n1) 7 ''' 8 [68 27 40 11 18 6 61 62 67 31] 9 '... ...


  1 import numpy as np
  2 
  3 ########################
  4 # 索引
  5 n1 = np.random.randint(0, 100, 10)
  6 # print(n1)
  7 '''
  8 [68 27 40 11 18  6 61 62 67 31]
  9 '''
 10 # print(n1[5])
 11 '''
 12 6
 13 '''
 14 n2 = np.random.randint(0, 100, (3, 4))  # 創建一個由0到100中隨機產生的3行4列的隨機數組
 15 # print(n2)
 16 '''
 17 [[46  5 20 78]
 18  [20  2 71 76]
 19  [27 71 19 39]]
 20 '''
 21 # print(n2[0, 1])  # 列印出來第0行的第2個元素
 22 '''
 23 5
 24 '''
 25 #############################
 26 # 切片操作
 27 n3 = np.random.randint(150, size=10)  # 創建一個由0到150的隨機整數組成的元素個數為10的一維數組
 28 # print(n3)
 29 '''
 30 [ 41  72  15 121  55  76  65  10 101  77]
 31 '''
 32 # print(n3[1:3])  # 取出索引從1到2的值
 33 '''
 34 [72 15]
 35 '''
 36 n4 = np.random.randint(0, 100, (3, 4, 5))  # 創建一個3維數組
 37 # print(n4)
 38 '''
 39 [[[27 80 43 98 87]
 40   [96 99  2 41 86]
 41   [73 83 96 54 26]
 42   [10 76 87 53 47]]
 43 
 44  [[33 63 98 70 41]
 45   [82 29 80 92 72]
 46   [98 44 51 97 85]
 47   [23 33  2 10 49]]
 48 
 49  [[86 79 98 76 65]
 50   [42  4 29 38 90]
 51   [ 6 57 92 66 38]
 52   [36 58 25 43 53]]]
 53 '''
 54 # print(n4[1:3])
 55 '''
 56 [[[33 63 98 70 41]
 57   [82 29 80 92 72]
 58   [98 44 51 97 85]
 59   [23 33  2 10 49]]
 60 
 61  [[86 79 98 76 65]
 62   [42  4 29 38 90]
 63   [ 6 57 92 66 38]
 64   [36 58 25 43 53]]]
 65 '''
 66 # print(n4[1:3, 1:4])
 67 '''
 68 [[[82 29 80 92 72]
 69   [98 44 51 97 85]
 70   [23 33  2 10 49]]
 71 
 72  [[42  4 29 38 90]
 73   [ 6 57 92 66 38]
 74   [36 58 25 43 53]]]
 75 '''
 76 # print(n4[1:3, 1:4, 1:4])
 77 '''
 78 [[[29 80 92]
 79   [44 51 97]
 80   [33  2 10]]
 81 
 82  [[ 4 29 38]
 83   [57 92 66]
 84   [58 25 43]]]
 85 '''
 86 ###############################
 87 # 變形
 88 n5 = np.random.randint(0, 100, (3, 4))
 89 # print(n5)
 90 '''
 91 [[78 85 94 85]
 92  [16 67 88 71]
 93  [80 12 13 10]]
 94 '''
 95 n6 = n5.reshape(4, 3)
 96 # print(n6)
 97 '''
 98 [[78 85 94]
 99  [85 16 67]
100  [88 71 80]
101  [12 13 10]]
102 '''
103 ## reshape和resize的區別
104 a = np.array([(1, 2, 3), (4, 5, 6)])
105 b = a.reshape(3, 2)
106 # print(b)
107 '''
108 [[1 2]
109  [3 4]
110  [5 6]]
111  將a數組的數據由2行3列變成3行2列得到b數組,但是a數組沒有發生改變
112  '''
113 a.resize(3, 2)
114 # print(a)
115 '''
116 [[1 2]
117  [3 4]
118  [5 6]]
119  a數組由2行3列變成3行2列,此時,a數組的形狀發生了改變
120  '''
121 # 多維數組降成一維
122 # print(n6.shape)
123 '''
124 (4, 3)
125 '''
126 n7 = n6.reshape(4 * 3)
127 # print(n7)
128 '''
129 [23 65 78 78 85 11 44 69 85 10 11 43]
130 '''
131 n8 = n6.reshape(-1)
132 # print(n8)
133 '''
134 [23 65 78 78 85 11 44 69 85 10 11 43]
135 '''
136 ###############################
137 # 級聯(將兩個數組連在一起)
138 '''
139 註意:1、級聯的參數必須是列表:一定要加中括弧或小括弧
140       2、維度必須相同
141       3、形狀相符
142       4、【重點】級聯的方向預設是shape這個元組的第一個值所代表的維度方向
143       5、可以通過axis參數改變級聯的方向
144 '''
145 n9 = np.random.randint(0, 10, size=(5, 5))  # 創建一個由0到10的正整數的隨機數生成的5行5列的隨機數組
146 # print(n9)
147 '''
148 [[7 1 9 3 0]
149  [7 0 9 3 0]
150  [2 1 4 0 6]
151  [0 8 2 8 3]
152  [6 8 8 4 4]]
153 '''
154 n10 = np.concatenate((n9, n9))  # 橫著級聯
155 # print(n10)
156 '''
157 [[7 1 9 3 0]
158  [7 0 9 3 0]
159  [2 1 4 0 6]
160  [0 8 2 8 3]
161  [6 8 8 4 4]
162  [7 1 9 3 0]
163  [7 0 9 3 0]
164  [2 1 4 0 6]
165  [0 8 2 8 3]
166  [6 8 8 4 4]]
167 '''
168 n11 = np.concatenate((n9, n9), axis=0)  # 豎著級聯
169 # print(n11)
170 '''
171 [[7 1 9 3 0]
172  [7 0 9 3 0]
173  [2 1 4 0 6]
174  [0 8 2 8 3]
175  [6 8 8 4 4]
176  [7 1 9 3 0]
177  [7 0 9 3 0]
178  [2 1 4 0 6]
179  [0 8 2 8 3]
180  [6 8 8 4 4]]
181 '''
182 n12 = np.concatenate((n9, n9), axis=1)  # 橫著級聯
183 # print(n12)
184 '''
185 [[7 1 9 3 0 7 1 9 3 0]
186  [7 0 9 3 0 7 0 9 3 0]
187  [2 1 4 0 6 2 1 4 0 6]
188  [0 8 2 8 3 0 8 2 8 3]
189  [6 8 8 4 4 6 8 8 4 4]]
190 '''
191 n13 = np.array([
192     (1, 2, 3),
193     (7, 8, 9)
194 ], dtype=int)
195 # print(n13)
196 '''
197 [[1 2 3]
198  [7 8 9]]
199 '''
200 n14 = np.hstack(n13)  # 將多維數組進行水平級聯,處理自己進行維度變更
201 # print(n14)
202 '''
203 [1 2 3 7 8 9]
204 '''
205 n15 = np.vstack(n14)  # 將一維數組進行垂直級聯,處理自己進行維度變更
206 # print(n15)
207 '''
208 [[1]
209  [2]
210  [3]
211  [7]
212  [8]
213  [9]]
214 '''
215 n16 = np.array([[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]])
216 # print(n16)
217 #################################
218 # 切分
219 '''
220 與級聯類似,三個函數完成切分工作:
221 1、np.split
222 2、np.vsplit
223 3、np.hsplit
224 '''
225 n17 = np.random.randint(0, 150, size=(5, 7))
226 # print(n17)
227 n18 = np.split(n17, (1, 3))  # 按行切割數組,此處是分別在行號為1和3前切割
228 n19 = np.split(n17, (1, 3), axis=0)  # 和n18的操作一樣
229 # print(n18)
230 #####################################
231 # 副本
232 '''
233 所有賦值運算不會為ndarray的任何元素創建副本。賦值後的對象的操作也對原來的對象生效。
234 '''
235 n20 = np.random.randint(0, 100, (3, 4))
236 # print(n20)
237 '''
238 [[ 8 83 57 15]
239  [81 61  0  0]
240  [56 88 73 91]]
241 '''
242 n21 = n20  # 此時,n21和n20是完全相同,並且兩者是有聯繫的。對n21操作的同時也對n22操作了。實際上是兩者的指針指向了同一塊記憶體地址
243 n21[2, 3] = 500
244 # print(n21)
245 '''
246 [[  8  83  57  15]
247  [ 81  61   0   0]
248  [ 56  88  73 500]]
249 '''
250 # print(n20)
251 '''
252 [[  8  83  57  15]
253  [ 81  61   0   0]
254  [ 56  88  73 500]]
255 '''
256 n22 = np.array([[8, 83, 57, 15],
257                 [81, 61, 0, 0],
258                 [56, 88, 73, 91]])
259 n23 = n22.copy()  # 此時n23為n22的副本,與n22完全分隔開了,對n23操作不會影響到n22。實際上是,在記憶體中新建了一個地方,把n22的值存放在裡面,同時n23的指針也指向了新的地址,而n22任然指向原先的。
260 n23[1, 2] = 500
261 # print(n23)
262 '''
263 [[  8  83  57  15]
264  [ 81  61 500   0]
265  [ 56  88  73  91]]
266 '''
267 # print(n22)
268 '''
269 [[ 8 83 57 15]
270  [81 61  0  0]
271  [56 88 73 91]]
272 '''
273 ##數組的計算
274 a = np.array([1, 2, 3])
275 b = np.array([4, 5, 6])
276 # 加法
277 c = a + b
278 print(c)
279 '''
280 [5 7 9]
281 '''
282 # 減法
283 d = a - b
284 print(d)
285 '''
286 [-3 -3 -3]
287 '''
288 # 乘法
289 e = a * b
290 print(e)
291 '''
292 [ 4 10 18]
293 '''
294 # 求和
295 f = np.array([(1, 2, 3), (4, 5, 6)])
296 print(f.sum())
297 '''
298 21
299 '''
300 # 按列求和
301 print(f.sum(axis=0))
302 '''
303 [5 7 9]
304 '''
305 # 按行求和
306 print(f.sum(axis=1))
307 '''
308 [ 6 15]
309 '''
310 # 最小值的值
311 print(f.min())
312 '''
313 1
314 '''
315 # 最小值的索引
316 print(f.argmin())
317 '''
318 0
319 '''
320 # 最大值的值
321 print(f.max())
322 '''
323 6
324 '''
325 print(f.argmax())
326 '''
327 5
328 '''
329 # 平均值
330 print(f.mean())
331 '''
332 3.5
333 '''
334 # 方差
335 print(f.var())
336 '''
337 2.9166666666666665
338 '''
339 # 標準差
340 print(f.std())
341 '''
342 1.707825127659933
343 '''
344 #############
345 # 線性代數的運算
346 # 矩陣內積
347 np.dot()
348 # 行列式
349 np.linalg.det()
350 # 逆矩陣
351 np.linalg.inv()
352 # 多元一次方程組求根
353 np.linalg.solve()
354 # 求特征值和特征向量
355 np.linalg.eig()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.生鮮電商平臺的價值與定位。 生鮮電商平臺是一家致力於打造全國餐飲行業智能化、便利化、平臺化與透明化服務的創新型移動互聯網平臺,連接買家與賣家之間的一個平臺 看以下的圖標:(商業模式) 名稱解釋: 買家:所有的大中小型餐館,酒店等餐飲行業都屬於我們常說的買家。 生鮮電商APP: 買家通過在APP上 ...
  • APDL代碼實現link180單元的使用 由於不知道怎樣使用LINK180單元,故按照相關的教程和理解,整理了一下比較完整的APDL的代碼。其中包含的圖片的保存和背景顏色的改變。 標簽:'LINK180' ' APDL' [toc] APDL代碼 FINISH /CLEAR /PREP7 ET,1, ...
  • 目的:實現壓縮包的自動解壓及刪除。 思路:獲取壓縮包 > 解壓 > 刪除壓縮包 代碼實現:此處代碼實現前提為.py文件和壓縮包在同一文件夾 結果:.zip文件一旦出現,則立刻被解壓並刪除 ...
  • 1.什麼是字典 字典是以key:value的形式來保存數據,用{}表示. 存儲的是key:value 坑: 字典存儲數據的時候是用的hash值來存儲. 演算法不能變(python的) # 數據必須是不可變的(可哈希). 字典的key必須是可哈希的(不可變). dic = {"jay":"周傑倫", " ...
  • 程式爬取目標 獲取博客園精華區文章的 標題、標題鏈接、作者、作者博客主頁鏈接、摘要、發佈時間、評論數、閱讀數和推薦數, 並存儲到 MongoDB 中。 程式環境 已安裝scrapy 已安裝MongoDB 創建工程 在命令提示符中執行上述命令後,會建立一個名為 的文件夾。 創建爬蟲文件 執行上述命令後 ...
  • 1、函數屬性的傳遞 1、疊加多個裝飾器 載入順序(outter函數的調用順序):自下而上 執行順序(wrapper函數的執行順序):自上而下 2、有參裝飾器:三層的閉包函數 對於裝飾器,三層就夠了(第一層傳參數,第二層傳函數,第三層執行添加的功能和源代碼) 只能將if else這種簡單的取代,有el ...
  • 題意 "題目鏈接" Sol 神仙題Orzzz 考慮兩邊是否有$1$ 設$f[i]$表示周長為$2i$的方案數 第一種情況:左側或右側有一個1,那麼把這個1刪去,對應的方案數為$f[i 1]$ 第二種情況:左側和右側都有一個1,把這兩個1刪去,對應的方案數為$f[i 2]$ 第三種情況:左側右側都沒有 ...
  • 1. 什麼是字典 字典是用{}表示,以key:value的形式來保存數據的,其查找效率比較高 坑: 字典存儲數據時是用哈希值來存儲的,演算法不能變(python的) 數據必須是可哈希的(不可變的),字典中的key必須是可哈希的(不可變的) 2. 字典的增刪改查 1. 添加 dic[新key] = 值 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...