Python 如何将来自5个不同列表或数组的数百万个元素组合在一起?

Python 如何将来自5个不同列表或数组的数百万个元素组合在一起?,python,numpy,itertools,Python,Numpy,Itertools,我想与5个不同数组中的元素进行所有可能的组合。 然而,当我运行代码时,错误显示数字太高。这个问题有解决办法吗 这是我的密码: import numpy as np a=np.arange(1000000000) b=np.arange(2000000000) c=np.arange(2000000000) d=np.arange(1000000000) e=np.arange(1000000000) from itertools import product iterables = [a,

我想与5个不同数组中的元素进行所有可能的组合。 然而,当我运行代码时,错误显示数字太高。这个问题有解决办法吗

这是我的密码:

import numpy as np

a=np.arange(1000000000)
b=np.arange(2000000000)
c=np.arange(2000000000)
d=np.arange(1000000000)
e=np.arange(1000000000)

from itertools import product

iterables = [a,b,c,d,e]
total_combi_index=[]
for t in product(*iterables):
    total_combi_index.append(t)
我们有标准库:链方法和from_iterable方法:

itertools.链(*iterables) 生成一个迭代器,从第一个iterable返回元素,直到元素用尽,然后继续到下一个iterable,直到所有iterable用尽。用于将连续序列作为单个序列处理。大致相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
classmethod-chain.from_iterable(iterable) chain()的替代构造函数。从延迟计算的单个iterable参数获取链接输入。大致相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
在python中,我们使用迭代器来解决这类问题

我们有标准的lib:chain方法和from_iterable方法:

itertools.链(*iterables) 生成一个迭代器,从第一个iterable返回元素,直到元素用尽,然后继续到下一个iterable,直到所有iterable用尽。用于将连续序列作为单个序列处理。大致相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
classmethod-chain.from_iterable(iterable) chain()的替代构造函数。从延迟计算的单个iterable参数获取链接输入。大致相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

在python中,我们使用迭代器来解决这类问题

为什么要这样做?这将占用大量内存,可能比您拥有的内存还多。@syntonym正常情况下,上限是多少?对于上面的代码,它不起作用,因此我最终从每个数组中选择了随机数,但当我选择100时,错误再次发生。但这真的是你想要的吗?你为什么要创建这么大的列表?之后你打算怎么处理这些数字?@syntonym谢谢!我试图在距离某个4D向量很近的地方找到10-20个4D向量的变化。即使使用6250000个组合,最近距离向量也很遥远,因此我正在尝试增加组合的总数。您不需要创建列表来实现这一点,您的
产品(*iterables)
已经是一个包含所有组合的iterable。你能不能不只是重复一下这个iterable?(不相关,但这似乎不是找到接近不同4D向量的4D向量的最佳方法)。为什么要这样做?这将占用大量内存,可能比您拥有的内存还多。@syntonym正常情况下,上限是多少?对于上面的代码,它不起作用,因此我最终从每个数组中选择了随机数,但当我选择100时,错误再次发生。但这真的是你想要的吗?你为什么要创建这么大的列表?之后你打算怎么处理这些数字?@syntonym谢谢!我试图在距离某个4D向量很近的地方找到10-20个4D向量的变化。即使使用6250000个组合,最近距离向量也很遥远,因此我正在尝试增加组合的总数。您不需要创建列表来实现这一点,您的
产品(*iterables)
已经是一个包含所有组合的iterable。你能不能不只是重复一下这个iterable?(不相关,但这似乎不是找到接近不同4D向量的4D向量的最佳方法)。