婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解決numpy數組互換兩行及賦值的問題

解決numpy數組互換兩行及賦值的問題

熱門標簽:淮安呼叫中心外呼系統如何 京華圖書館地圖標注 佛山通用400電話申請 打印谷歌地圖標注 廣東旅游地圖標注 看懂地圖標注方法 蘇州人工外呼系統軟件 電話機器人貸款詐騙 電話外呼系統招商代理

看代碼吧~

import numpy as np 
a = np.array([[1,1,1],[2,2,2],[3,3,3], [4,4,4]])
tmp = a[1]
a[1] = a[2]
a[2] = tmp

tmp只是a[1]的另一個名字,它并不是將a[1]復制了之后,就與a[1]無關,或許可理解為一種引用。所以這段代碼的效果并不能如愿互換原始a數組的第2行和第三行,而是會將2,3行都變成原來的第三行[3,3,3],像這樣:

array([[1, 1, 1],
       [3, 3, 3],
       [3, 3, 3],
       [4, 4, 4]])

那么如果想互換兩行,應該怎么操作呢?

有兩種方法,第一種很簡便:

a[[1,2], :] = a[[2,1], :]

這樣就將數組a的第2行和第3行互換了。或者,寫得更易理解一點,也可以這樣一步一步寫:

tmp = np.copy(a[1])
a[1] = a[2]
a[2] = tmp

這兩種寫法都可以將數組a的第2,3行互換,即可以得到:

array([[1, 1, 1],
       [3, 3, 3],
       [2, 2, 2],
       [4, 4, 4]])

補充:numpy數組行交換的bug

今日發現一個小問題,還好自己發現了,不然這個bug不知道要背鍋好久

實驗要求:

交換一個numpy數組中的第i行和第j行

上代碼:

import numpy as np 

arr = np.asarray([[1,2,3], [4,5,6], [7,8,9]])
print(arr)

tmp = arr[2]
arr[2] = arr[0]
arr[0] = tmp

print(arr)

打印結果:

[[1 2 3]
 [4 5 6]
 [7 8 9]]
 
[[1 2 3]
 [4 5 6]
 [1 2 3]]

這個結果打印出來,整個人傻眼了

為了搞懂為啥是這個結果,我打印變量tmp看看

import numpy as np 
arr = np.asarray([[1,2,3], [4,5,6], [7,8,9]])
print(arr)

tmp = arr[2]
print(tmp)

arr[2] = arr[0]
print(tmp)

arr[0] = tmp
print(arr)

打印結果:

[[1 2 3]
 [4 5 6]
 [7 8 9]]  #原始的arr
 
[7 8 9]    #第一次打印tmp

[1 2 3]    #第二次打印tmp

[[1 2 3]
 [4 5 6]
 [1 2 3]]  #交換后的arr

這樣就發現了問題,這是python的特性,變量tmp不是copy了arr[2]的數值,而是類似于C中的指針,指在了arr[2]的地址上,當執行arr[2] = arr[0]后,arr[2]的數值發生了變化,所以tmp也發生了變化

而處理的辦法也很簡單,變量tmp深度copy arr[2]就行,即:tmp = arr[2].copy()

import numpy as np 
arr = np.asarray([[1,2,3], [4,5,6], [7,8,9]])
print(arr)

tmp = arr[2].copy()
print(tmp)

arr[2] = arr[0]
print(tmp)

arr[0] = tmp
print(arr)

打印結果:

[[1 2 3]
 [4 5 6]
 [7 8 9]]  #原始的arr
 
[7 8 9]    #第一次打印tmp

[7 8 9]    #第二次打印tmp

[[7 8 9]
 [4 5 6]
 [1 2 3]]  #交換后的arr

搞定~

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • numpy 聲明空數組詳解
  • Numpy將二維數組添加到空數組的實現
  • 在NumPy中創建空數組/矩陣的方法
  • NumPy實現ndarray多維數組操作
  • 如何在向量化NumPy數組上進行移動窗口
  • 如何將numpy二維數組中的np.nan值替換為指定的值
  • python 將numpy維度不同的數組相加相乘操作
  • python numpy.power()數組元素求n次方案例
  • Python 用NumPy創建二維數組的案例
  • Numpy ndarray 多維數組對象的使用
  • 淺談Python numpy創建空數組的問題

標簽:駐馬店 衡水 股票 呼和浩特 畢節 湖州 中山 江蘇

巨人網絡通訊聲明:本文標題《解決numpy數組互換兩行及賦值的問題》,本文關鍵詞  解決,numpy,數組,互換,兩行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決numpy數組互換兩行及賦值的問題》相關的同類信息!
  • 本頁收集關于解決numpy數組互換兩行及賦值的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 南丹县| 余庆县| 钟祥市| 柳河县| 工布江达县| 亚东县| 新宾| 抚顺县| 武安市| 阜新| 远安县| 乐陵市| 汉川市| 丽水市| 嘉黎县| 军事| 仙桃市| 鄂托克前旗| 吉木萨尔县| 南漳县| 孝昌县| 铜陵市| 马龙县| 邵东县| 蕉岭县| 长沙市| 阿尔山市| 石渠县| 峨边| 青海省| 汉寿县| 仁寿县| 吉安市| 东丰县| 昭通市| 天气| 伊金霍洛旗| 宁波市| 庆安县| 潼关县| 海淀区|