我正在尝试生成以下步进序列模式但python抛出 MemoryError
import numpy as np
import pandas as pd
import itertools
Temp = np.linspace(-5,5,pow(2,16))
df = pd.DataFrame([Temp*2] , index=['ColA','ColB']).T
print df
df2 = pd.DataFrame([e for e in itertools.product(df.ColA,df.ColB)],columns=df.columns)
print df2
错误
df2 = pd.DataFrame([e for e in itertools.product(df.ColA,df.ColB)],columns=df.columns)
MemoryError
请告诉我如何解决这个问题?
答案 0 :(得分:2)
使用power=16
和itertools.product
(产生cartesian product
),您正在创建一个(2*2)^16=4,294,967,296
tuples
或rows
的列表。 DataFrame
。你想要那么长的序列吗?
power = 16
for i in range(power):
Temp = np.linspace(-5, 5, pow(2, i))
df = pd.DataFrame([Temp] * 2, index=['ColA','ColB']).T
print(i, len(df), len(list(product(df.ColA, df.ColB))))
0 1 1
1 2 4
2 4 16
3 8 64
4 16 256
5 32 1024
6 64 4096
7 128 16384
8 256 65536
9 512 262144
10 1024 1048576
11 2048 4194304
12 4096 16777216
13 8192 67108864
14 16384 268435456
...