在python中获取一个没有numpy或pandas的数组样本

问题描述 投票:1回答:2

我正在尝试创建一种“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
2个回答
1
投票

使用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)

3
投票

您可以使用内置的qazxsw poi库,例如:

random

这将给你一个500 import random random.sample(data, 500) s的list,每个代表一行。

© www.soinside.com 2019 - 2024. All rights reserved.