Python中的二维数组

Python中的二维数组,python,arrays,Python,Arrays,我正在读取三个独立城市的数据,我希望将每组数据保存在二维数组中,但当我通过部分代码时,循环会继续从我的前两个城市写入内容,因为我只有一个一维数组。我应该在哪里设置这些2-D数组来保持文件的有序性?我应该使用什么函数和参数来进行设置 阵列应为3X54(每个城市3个,每年数据54个) 编辑:以下代码中的所有初始变量(即precip、tmin、tmax)在开始时将包含超过19000个元素,我在代码中每年的后期都会对这些元素进行平均 import numpy as np import matplotli

我正在读取三个独立城市的数据,我希望将每组数据保存在二维数组中,但当我通过部分代码时,循环会继续从我的前两个城市写入内容,因为我只有一个一维数组。我应该在哪里设置这些2-D数组来保持文件的有序性?我应该使用什么函数和参数来进行设置

阵列应为3X54(每个城市3个,每年数据54个)

编辑:以下代码中的所有初始变量(即precip、tmin、tmax)在开始时将包含超过19000个元素,我在代码中每年的后期都会对这些元素进行平均

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[:]
创建一个浅拷贝。您需要一个:

从文档中:

浅复制和深复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)相关:

  • 浅复制构造一个新的复合对象,然后(尽可能)向其中插入对原始对象的引用
  • 深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中
这一行:

data[:]
创建一个浅拷贝。您需要一个:

从文档中:

浅复制和深复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)相关:

  • 浅复制构造一个新的复合对象,然后(尽可能)向其中插入对原始对象的引用
  • 深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中

然而,数据的大小并不是我最终需要数组的大小。里面有19000多个元素。如果你把代码归结为一个简单的问题,很多时候会更容易找到问题。否则就是大海捞针。将它缩减到最少的代码量来演示问题的解决。所有这些现在只针对其中一个变量。然而,数据的大小并不是我最终需要数组的大小。里面有19000多个元素。如果你把代码归结为一个简单的问题,很多时候会更容易找到问题。否则就是大海捞针。将它缩减到最少的代码量来演示问题的解决。所有这些都只针对其中一个变量。您正在导入
pandas
,但您似乎没有真正使用它——特别是,您似乎没有利用
groupby
@DSM。您对如何在此处使用groupby函数有何建议?我不太了解pandas,只是找到了一个函数来处理将数据中的8位YYYYMMDD转换成字符串的问题。您正在导入
pandas
,但您似乎并没有真正使用它——特别是,您似乎没有利用
groupby
@DSM。您对如何在此处使用groupby函数有何建议?我不太了解pandas,只是找到了一个函数来处理将数据中的8位YYYYMMDD转换成字符串的问题。