首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在函数python中将列表转换为数组?

如何在函数python中将列表转换为数组?
EN

Stack Overflow用户
提问于 2013-10-14 11:43:49
回答 3查看 4K关注 0票数 1

我定义了一个函数(过程)来读取一个文件。我希望它用我想从文件中读取的数据返回数组,如下所示:

代码语言:javascript
复制
import csv
import numpy as np
import matplotlib.pyplot as plt

# Subroutine to read the day, Ta,Tp from a file and convert them into arrays
def readstr(fname,day,Ta,Tp):
    van = open(fname,'r')
    van_csv = van.readlines()[7:] # Skip seven lines
    van.close()                   # close the file
    van_csv = csv.reader(van_csv) # now the file is separated by colunms 
    for row  in van_csv: # Passing the values of the each column to arrays
      day.append(row[1])
      Ta.append(row[8])
      Tp.append(row[7])
    day = np.array(day,dtype=np.integer)
    Ta = np.array(Ta,dtype=np.float)
    Tp = np.array(Tp,dtype=np.float)
van = "file"
# Defining the lists
dayVan = []
Tav = []
Tpv = []

readstr(van,dayVan,Tav,Tpv)
print Tav

我认为这会有效,但是dayVan,Tpv,Tav仍然是列表。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-14 11:48:54

线

代码语言:javascript
复制
Ta = np.array(Ta,dtype=np.float)

从列表Ta的内容创建一个新的数组对象,然后将该数组分配给本地标识符Ta。它确实是,而不是,它改变了引用列表的全局。

Python没有“变量”。它有标识符。在执行a = b时,只需简单地说“将名称a绑定到绑定到b的对象”。a只是一个可以用来检索对象的标签。如果然后执行a = 0,您将重新绑定标签a,但这会使而不是影响绑定到b的对象。标识符是,而不是内存位置。

要将结果数组从函数中传递出去,您可以:

  • 返回它们并重新分配全局Ta
  • 直接分配给全局变量。但是,为了做到这一点,应该给本地Ta一个新的名称,您必须使用global语句(注意:避免此解决方案)。
票数 3
EN

Stack Overflow用户

发布于 2013-10-14 11:48:26

也许你可以简单地做:

代码语言:javascript
复制
dayVan, Tpv, Tav = np.loadtxt(fname, usecols=(1,7,8), skiprows=7, delimiter=',', unpack=True)
票数 1
EN

Stack Overflow用户

发布于 2013-10-14 11:48:42

转换是正确的,但只在函数内部完成。

试着返回一天,Ta和Tp在您的功能结束,并从调用者,它将更好地工作。

代码语言:javascript
复制
def readstr(fname):
    van = open(fname,'r')
    van_csv = van.readlines()[7:] # Skip seven lines
    van.close()                   # close the file
    van_csv = csv.reader(van_csv) # now the file is separated by colunms 
    day, Ta, Tp = [], [], []
    for row  in van_csv: # Passing the values of the each column to arrays
      day.append(row[1])
      Ta.append(row[8])
      Tp.append(row[7])
    day = np.array(day,dtype=np.integer)
    Ta = np.array(Ta,dtype=np.float)
    Tp = np.array(Tp,dtype=np.float)
    return day, Ta, Tp

dayVan, Tav, Tpv = readstr(van)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19359462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档