Python 代码的运行时间(由于数组大小)是否会太长,从而阻止代码一起启动?
我在Jupyterlab中使用python 我试图简单地获取一个包含700000个坐标点的数组,然后将它们收集并平均成100nm的正方形 我知道这段代码运行得很好,因为它使用了5000个数组 当我尝试使用较大的数组时,IDE似乎在代码完全执行之前超时。 或者有人能在我的代码中看到一个无限循环来阻止它完成吗 工作代码的前半部分:Python 代码的运行时间(由于数组大小)是否会太长,从而阻止代码一起启动?,python,arrays,jupyter-notebook,runtime,jupyter-lab,Python,Arrays,Jupyter Notebook,Runtime,Jupyter Lab,我在Jupyterlab中使用python 我试图简单地获取一个包含700000个坐标点的数组,然后将它们收集并平均成100nm的正方形 我知道这段代码运行得很好,因为它使用了5000个数组 当我尝试使用较大的数组时,IDE似乎在代码完全执行之前超时。 或者有人能在我的代码中看到一个无限循环来阻止它完成吗 工作代码的前半部分: import matplotlib as plt import numpy as np import pandas as pd xtot = 10.0 ytot = 2
import matplotlib as plt
import numpy as np
import pandas as pd
xtot = 10.0
ytot = 20.0
xstep = 0.1
ystep = 0.1
x = 0.0
y = 0.0
T = np.array([])
Tygrad = np.array([])
#Convert .txt to .csv
read_file = pd.read_csv (r'/Users/rjordan/Documents/PHD PROJECT/comsol/April 2021 simulations/OOMMF Para to Perp 1 to 4.txt', delim_whitespace=True)
read_file.to_csv (r'/Users/rjordan/Documents/PHD PROJECT/comsol/April 2021 simulations/OOMMF Para to Perp 1 to 4.csv', index=None)
#read in data file and assign to DataFrame
col_list = ["X", "Y", "Z", "Color"]
df = pd.read_csv("/Users/rjordan/Documents/PHD PROJECT/comsol/April 2021 simulations/OOMMF Para to Perp 1 to 4.csv", usecols=col_list)
n = df.shape[0]
XM = max(df["X"])
YM = max(df["Y"])
TM = max(df["Color"])
print(XM)
print(YM)
print(TM)
print(n)
print()
10.000000000000002
20.000000000000004
393.02205716505614
713457
代码的后半部分实际上永远不会吐出任何东西(我对5000数组的估计是它需要7小时才能完成):
而x
为什么,为什么,为什么?!?!你是这样做的吗?您必须执行xtot*ytot*n
操作。请把这个换成:1。准备您的xtot*ytot
输出(甚至可能只是一个查看代码的xtot
长列表)。然后在df
上进行一次迭代,计算要更新的数据(比如floor(df[“X”][i]/xstep)
)。从xtot*ytot*n
移动到xtot*ytot+n
将是一个巨大的改进。@Faboor我的意思是,这个操作实际上只是一个除法,我不认为会有那么大的不同。当然,你的意思是,如果基本上保持相同的代码,但将所有不同的N加在一起形成一个数组,那么我可以在一次大的飞跃中将整个数组的T除以N?哦,等等,我明白你的意思了
while x < xtot:
x += xstep
y = 0.0
while y < ytot:
Tot = 0.0
N = 0.0
y += ystep
for i in range(n):
if df["X"][i] <= x and df["X"][i] >= (x-xstep) and df["Y"][i] <= y and df["Y"][i] >= (y-ystep):
Tot += df["Color"][i]
N += 1
Tsq = Tot/N
T = np.append(T, Tsq)
Tx = int(xtot/xstep)
Ty = int(ytot/ystep)
To = T.reshape(Tx,Ty)
Tn = T.shape
Ton = To.shape
Tm = max(T)
print(Tm)
print(Tn)
print(Ton)
print(T)
print(To)