python numpy數組中的復制問題


vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5)
vector[equal_to_ten_or_five] = 50
print(vector)

 

第一次看到這個的時候一臉懵逼,后來分析了下懂了下面記錄下,方便下次看看

第一行分析:
結果5, 10, 15, 20

第二行分析:
vector == 10 數組和值比對獲得結果是每個元素和這個數比較生成相應的bool數組 這里的話就知道了結果是[Flase,True,Flase,Flase]
vector == 5就是[True,Flase,Flase,Flase]
然后進行或'|'運算得到了[True,True,Flase,Flase]
着兩個數組進行或運算的時候是數組直接相同序號的元素或元素然后得到新的數組(遵循規則F|F =F,F|T=T,T|T=T)
此時equal_to_ten_or_five 就等於[True,True,Flase,Flase]
第三行分析:
vector[equal_to_ten_or_five]=50 會給等於True的復制為50 其他的不變也就是此時
vector等於[50,50,15,20]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM