日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python關于矩陣重復賦值覆蓋問題的解決方法

系統 2232 0

本文實例講述了python關于矩陣重復賦值覆蓋問題的解決方法。分享給大家供大家參考,具體如下:

            
import itertools
import numpy as np
comb = list(itertools.combinations(list(range(regions)), 2))
bands_info = []
coeff = np.zeros([bands, len(comb)])
for cla in range(classes):
  class_info = data[:,cla*bands*regions:(cla+1)*bands*regions]
  for bs in range(bands):
    n = bs*regions
    for i in range(len(comb)):
      index1 = comb[i][0]+n
      index2 = comb[i][1]+n
      part1 = class_info[:, index1]
      part2 = class_info[:, index2]
      coeff[bs, i] = (np.corrcoef(part1, part2))[0, 1]
  bands_info.append(coeff.reshape([1,-1]))
coeff_info = np.vstack((bands_info[0], bands_info[1], bands_info[2],bands_info[3]))


          

例如這個循環賦值過程,最終得出來的結果是bands_info這個List里面每一個矩陣都是一樣的,這是為什么呢?我一開始也在這里糾結了很長時間,思來想去感覺沒錯的呀。后來想想以前學的C語言知識,才有點明白。原來python里面有淺層copy和深層copy這一說,同是一個矩陣的話占用的是同一個地址,在里面進行重復賦值的話前面的值都會被覆蓋掉。不只是當前變量被覆蓋掉,就是你之后用到這個變量的也會被覆蓋。比如說你a的變量被b覆蓋了,那你后面用到a的變量的地方,a的值也會變成b的值。是不是很可怕。

那么應該怎么進行修改呢?

            
import itertools
import numpy as np
comb = list(itertools.combinations(list(range(regions)), 2))
bands_info = []
for cla in range(classes):
  coeff = np.zeros([bands, len(comb)])
  class_info = data[:,cla*bands*regions:(cla+1)*bands*regions]
  for bs in range(bands):
    n = bs*regions
    for i in range(len(comb)):
      index1 = comb[i][0]+n
      index2 = comb[i][1]+n
      part1 = class_info[:, index1]
      part2 = class_info[:, index2]
      coeff[bs, i] = (np.corrcoef(part1, part2))[0, 1]
  bands_info.append(coeff.reshape([1,-1]))
coeff_info = np.vstack((bands_info[0], bands_info[1], bands_info[2],bands_info[3]))


          

改成這樣就可以了。就是將初始矩陣在循環里在重新設定一遍,意思相當就是給了一次新的地址,再進行復制的話就不會覆蓋前面的結果了。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 镇坪县| 望江县| 象州县| 石家庄市| 浦东新区| 宁都县| 邛崃市| 福鼎市| 敦化市| 那曲县| 宁城县| 沈阳市| 青川县| 台东县| 左权县| 长岭县| 西充县| 云龙县| 闵行区| 临朐县| 周至县| 正定县| 五大连池市| 元朗区| 怀来县| 兴安县| 辽中县| 沾益县| 新化县| 通榆县| 繁昌县| 广安市| 三门县| 蓬安县| 南宫市| 兴化市| 皮山县| 三都| 平山县| 伊川县| 曲松县|