【问题标题】:Saving a matrix into an array将矩阵保存到数组中
【发布时间】:2021-12-15 00:27:57
【问题描述】:

我想使用写入带有一些标题的文本文件中的数据。该文件如下所示:

#Fruit list
#Prices from different vendors
   Pineapple    4.49   4.29   5.19
   Apple        1.99   1.89   2.19
   Banana       1.99   1.99   1.79
   Kiwi         2.99   2.99   2.99

我想将此表保存到一个数组中。到目前为止,我尝试过:

def fruits():
    items = []
    with open('prices.txt', 'r') as data:
        for line in data.readlines()[2:]:   #Header is always 2 lines 
            items.append(line.strip())
            species = np.array(items)
        return species

这将返回一个 0-D 数组,而我期待一个 2D 数组。然后我尝试删除附加行(这似乎没有必要开始)并尝试:

def fruits():
    items = []
    with open('prices.txt', 'r') as data:
        for line in data.readlines()[2:]:
            species = np.array(line)
        return species

但是这只会返回最后一行。它必须是一个非常容易解决的问题,但我很困惑,尤其是第二次尝试。

【问题讨论】:

    标签: python readlines


    【解决方案1】:

    虽然@JALO - JusAnotherLivngOrgani 的答案有效,但我还想添加一个仅使用 numpy 的替代方案:

        fruits = []
        with open('File.txt') as data:
            for line in data.readlines()[2:]: #Skipping the 2 line header
                fruits.append(line)
            string = [i for item in fruits for i in item.split()] # Gives a 1D list array.
            string = np.array(string).reshape(-1,4) # Converts the list array into 2D numpy array.
    

    文件总是4列,但行数不同,所以'-1'处理它。

    【讨论】:

      【解决方案2】:

      如果你对 pandas 和 numpy 持开放态度,那么:

      import pandas as pd
      import numpy
      
      df=pd.read_csv("Filename",index_col=0)
      df.to_numpy()
      df.to_records() #if index is needed too
      

      应该给你所需的数组形式的数据

      示例: 鉴于此文件:https://file.io/5mc5MGnh0pZN

      我写了以下内容来阅读它:

      然后将df转为numpy数组:

      【讨论】:

      • 是的,完全没问题,但是当我运行它时,我得到:Empty DataFrame
      • 您可能希望指定字段分隔符:pd.read_csv("Filename",index_col=0,sep='\t'),假设您的文件是制表符分隔的
      • 不幸的是,没有。我还尝试了我在问题中给出的示例,它也返回了一个空数据框
      • 查看示例。确保您的文件具有正确的分隔符。有时有多个空格而不是制表符。在这种情况下,请执行以下操作:pd.read_csv("Filename",index_col=0,header=None, delim_whitespace=True)。指定最后的文件名。
      • 它适用于 '\s+',但将其转换为 numpy 会删除我需要保留的第一列(示例中的水果名称)。我想没有熊猫,不过感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2015-10-18
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多