簡體   English   中英

Python中的二維數組

[英]Two-dimensional arrays in Python

我正在讀取三個不同城市的數據,並且希望將每個數據集都保存在二維數組中,但是當我跳過代碼的一部分時,循環就覆蓋了我前兩個城市的內容,具有一維數組。 我應該在哪里設置這些2-D數組以使文件井井有條,應該使用什么函數和參數進行設置?

數組應為3X54(每個城市3個,每年數據54個)

編輯:下面代碼中的所有初始變量(即precip,tmin,tmax)一開始將包含19,000個元素,而我后來平均每年要在代碼中進行平均。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

city = ['Lubbock.txt','Erie.txt','Oslo.txt']
years = np.arange(1960,2014,1)
months_summer = range(5,8,1)

for x in range(0,len(city),1):

    data = np.genfromtxt(city[x], skip_header=2, usecols=(1), dtype=('S8'))
    data2 = np.genfromtxt(city[x], skip_header=2, usecols=(2,3,4))

    #ONLY GET 1-D ARRAY WHEN I ASK FOR SHAPE OF VARIABLE AFTER THIS POINT

    dates  = pd.DatetimeIndex(data[:])
    year   = dates.year
    month  = dates.month
    day    = dates.day
    precip = data2[:,0]/10.
    tmax   = data2[:,1]/10.
    tmin   = data2[:,2]/10.

    tmaxF  = (tmax*(9./5.))+32.
    tminF  = (tmin*(9./5.))+32.
    precipinches = precip*0.03937007874

    tmax_avg = []

    JJA3tmax_avg = []

    JJAtmax_avg = []

    DJFtmax_avg = []   

    for yr in years: 
        toavg = np.where(year == yr) 
        tmax_avg.append(np.average(tmax[toavg])) 


        for mo in months_summer:
            sumtoavg = np.where(month == mo)
            JJA3tmax_avg.append(np.average(tmax[sumtoavg]))


        JJAtmax_avg.append(np.average(JJA3tmax_avg))
        JJA3tmax_avg = []

        dec_this_year = (year == yr) & (month == 12)
        jan_next_year = (year == (yr+1)) & (month == 1)
        feb_next_year = (year == (yr+1)) & (month == 2)

        wintoavg = np.where(dec_this_year & jan_next_year & feb_next_year)

        DJFtmax_avg.append(np.average(tmax[wintoavg]))


    tmaxmean30 = np.average(tmax_avg[1:31])
    JJAtmaxmean30 = np.average(JJAtmax_avg[1:31])
    DJFtmaxmean30 = np.average(DJFtmax_avg[1:31])

#THIS IS THE DATA THAT I'M PLOTTING
    tmax_avg_dep = tmax_avg - tmaxmean30
    JJAtmax_avg_dep = JJAtmax_avg - JJAtmaxmean30
    DJFtmax_avg_dep = DJFtmax_avg - DJFtmaxmean30

這行:

data[:]

創建一個淺表副本。 您需要一個深層副本

import copy
copy.deepcopy(data)

從文檔:

淺表復制和深度復制之間的區別僅與復合對象(包含其他對象的對象,如列表或類實例)有關:

  • 淺表副本構造一個新的復合對象,然后(在可能的范圍內)將對原始對象中找到的對象的引用插入其中。
  • 深層副本將構造一個新的復合對象,然后遞歸地將原始對象中發現的對象的副本插入其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM