itertools 和 pandas 的内存错误?
Memory errors with itertools and pandas?
我正在尝试生成以下步进序列模式,但 python 抛出
内存错误
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
请告诉我如何解决这个问题?
使用 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
...
我正在尝试生成以下步进序列模式,但 python 抛出 内存错误
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
请告诉我如何解决这个问题?
使用 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
...