【问题标题】:Take a sample of an array without numpy or pandas in python在python中取一个没有numpy或pandas的数组样本
【发布时间】:2019-02-26 11:31:31
【问题描述】:

我正在尝试创建一种“pythonic”方式,在 python 中获取一个非常大的数组的一小部分。

我目前正在使用具有以下代码的 58 列和 4960 行的 csv:

def import_normal_csv(file):
    # Create blank array
    results = []
    # Open file
    with open(file) as csvfile:
        # read in file changing values to floats
        reader = csv.reader(csvfile, quoting=csv.QUOTE_NONNUMERIC)
        for row in reader:
            results.append(row)
    return results

def main():
    print(" Working SPAM Dataset... ")
    # Create a raw data array without numpy
    spam_raw_data = import_normal_csv('spam.csv')

    # CREATE SUBSET OF SPAM_RAW_DATA HERE

    random.shuffle(spam_raw_data)

我已经看到了使用numpypandas 的各种方法,但我想在没有这些库的情况下自然地做到这一点。而不是我的庞大数组,我怎么能只接收... 500 行(或一些明显少于近 5000 的任意数字)?

【问题讨论】:

    标签: python arrays python-3.x


    【解决方案1】:

    可以使用内置的random库,例如:

    import random
    
    random.sample(data, 500)
    

    这将为您提供 500 个lists 的list,每个代表一行。

    【讨论】:

      【解决方案2】:

      使用random.sample:

      subset_size = 500
      random.sample(spam_raw_data, subset_size)
      

      还请注意您的import_normal_csv 函数可以简化:

      def import_normal_csv(file):
          with open(file) as csvfile:
              reader = csv.reader(csvfile, quoting=csv.QUOTE_NONNUMERIC)
              return list(reader)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-24
        • 2020-12-02
        • 1970-01-01
        • 2018-07-05
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多