欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決numpy數(shù)組互換兩行及賦值的問題

 更新時(shí)間:2021年04月16日 14:42:43   作者:grace_cxj  
這篇文章主要介紹了解決numpy數(shù)組互換兩行及賦值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

看代碼吧~

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]的另一個(gè)名字,它并不是將a[1]復(fù)制了之后,就與a[1]無關(guān),或許可理解為一種引用。所以這段代碼的效果并不能如愿互換原始a數(shù)組的第2行和第三行,而是會(huì)將2,3行都變成原來的第三行[3,3,3],像這樣:

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

那么如果想互換兩行,應(yīng)該怎么操作呢?

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

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

這樣就將數(shù)組a的第2行和第3行互換了?;蛘?,寫得更易理解一點(diǎn),也可以這樣一步一步寫:

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

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

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

補(bǔ)充:numpy數(shù)組行交換的bug

今日發(fā)現(xiàn)一個(gè)小問題,還好自己發(fā)現(xiàn)了,不然這個(gè)bug不知道要背鍋好久

實(shí)驗(yàn)要求:

交換一個(gè)numpy數(shù)組中的第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)

打印結(jié)果:

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

這個(gè)結(jié)果打印出來,整個(gè)人傻眼了

為了搞懂為啥是這個(gè)結(jié)果,我打印變量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)

打印結(jié)果:

[[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

這樣就發(fā)現(xiàn)了問題,這是python的特性,變量tmp不是copy了arr[2]的數(shù)值,而是類似于C中的指針,指在了arr[2]的地址上,當(dāng)執(zhí)行arr[2] = arr[0]后,arr[2]的數(shù)值發(fā)生了變化,所以tmp也發(fā)生了變化

而處理的辦法也很簡單,變量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)

打印結(jié)果:

[[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

搞定~

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Python函數(shù)命名空間和作用域(Local與Global)

    Python函數(shù)命名空間和作用域(Local與Global)

    這篇文章主要介紹了Python函數(shù)命名空間和作用域分別介紹Local與Global模式,內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Python中的通函數(shù)numpy.ufunc詳解

    Python中的通函數(shù)numpy.ufunc詳解

    這篇文章主要介紹了什么是通函數(shù)numpy.ufunc,簡單說就是numpy的函數(shù),因?yàn)閚umpy針對(duì)的是數(shù)組張量,因此,幾乎每一個(gè)函數(shù)都是ufunc。本文針對(duì)ufunc的屬性進(jìn)行研究,需要的朋友可以參考下
    2023-04-04
  • Python一行命令部署http?ftp服務(wù)

    Python一行命令部署http?ftp服務(wù)

    這篇文章主要介紹了Python一行命令部署http?ftp服務(wù)實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 18個(gè)幫你簡化代碼的Python技巧分享

    18個(gè)幫你簡化代碼的Python技巧分享

    選擇學(xué)習(xí)?python?時(shí),最令我震驚的是它的簡單性和可讀性。但是你知道還可以用更少的代碼行可以讓?Python?代碼變得更簡單嗎?本文為大家總結(jié)了18個(gè)幫你簡化代碼的Python技巧,感興趣的可以了解一下
    2022-07-07
  • 如何用用Python將地址標(biāo)記在地圖上

    如何用用Python將地址標(biāo)記在地圖上

    這篇文章主要介紹了如何用用Python將地址標(biāo)記在地圖上,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python利用Seaborn繪制多標(biāo)簽的混淆矩陣

    Python利用Seaborn繪制多標(biāo)簽的混淆矩陣

    混淆矩陣也稱誤差矩陣,是表示精度評(píng)價(jià)的一種標(biāo)準(zhǔn)格式,用n行n列的矩陣形式來表示。本文將利用Seaborn繪制多標(biāo)簽的混淆矩陣,感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • python matplotlib庫繪制條形圖練習(xí)題

    python matplotlib庫繪制條形圖練習(xí)題

    這篇文章主要介紹了python matplotlib庫繪制條形圖練習(xí)題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python入門_淺談邏輯判斷與運(yùn)算符

    Python入門_淺談邏輯判斷與運(yùn)算符

    下面小編就為大家?guī)硪黄狿ython入門_淺談邏輯判斷與運(yùn)算符。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • pytorch實(shí)踐線性模型3d詳解

    pytorch實(shí)踐線性模型3d詳解

    這篇文章主要介紹了pytorch實(shí)踐線性模型3d詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python基于pygame實(shí)現(xiàn)的font游戲字體(附源碼)

    Python基于pygame實(shí)現(xiàn)的font游戲字體(附源碼)

    這篇文章主要介紹了Python基于pygame實(shí)現(xiàn)的font游戲字體,涉及Python響應(yīng)鍵盤按鍵動(dòng)態(tài)操作圖片元素的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11

最新評(píng)論