在下面的代码中,我有 5 组数据用 5 个不同颜色的误差条表示(我没有显示大写)。errorbar plot在两个轴上都以对数刻度显示。使用curvefit,我试图找到通过这些误差条的最佳线性回归。然而,我定义的幂律方程似乎不容易找到 5 条线的最佳拟合斜率。我的期望是所有 5 条彩色线都应该是直线且具有负斜率。我很难弄清楚应该在曲线拟合过程中指定哪个起点p0。即使我最初难以猜测的值,我仍然没有得到所有的直线,其中一些与我的观点相差甚远。这里有什么问题?
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
x_mean = [2.81838293e+20, 5.62341325e+20, 1.12201845e+21, 2.23872114e+21, 4.46683592e+21, 8.91250938e+21, 1.77827941e+22]
mean_1 = [52., 21.33333333, 4., 1., 0., 0., 0.]
mean_2 = [57., 16.66666667, 5.66666667, 2.33333333, 0.66666667, 0., 0.33333333]
mean_3 = [67.33333333, 20., 8.66666667, 3., 0.66666667, 1., 0.33333333]
mean_4 = [79.66666667, 25., 8.33333333, 3., 1., 0., 0.]
mean_5 = [54.66666667, 16.66666667, 8.33333333, 2., 2., …Run Code Online (Sandbox Code Playgroud) 我在目录中有一个名为 fName.txt 的文件。运行以下 python 代码段(来自模拟)将通过执行循环(包含代码段)三次将 6 个数字添加到文本文件中的 3 行和 2 列中。但是,我想在将新数据写入文件之前完全清空文件。(否则多次运行脚本会产生模拟所需的三行以上,这会产生无意义的结果;换句话说,脚本只需要看到模拟产生的三行)。我遇到了以下页面如何仅删除 python 中文件的内容,其中解释了如何执行此操作,但我无法将其实现到我的示例中。特别是,经过pass语句,我不确定语句的顺序,因为我的文件一开始是关闭的,并且一旦print执行语句就必须再次关闭。每次,我都会收到不同的错误消息,无论如何我都无法避免。这是我收到的一种错误,表明内容已被删除(很可能在打印语句之后):
/usr/lib/python3.4/site-packages/numpy/lib/npyio.py:1385: UserWarning: genfromtxt: 空输入文件: "output/Images/MW_Size/covering_fractions.txt" warnings.warn('genfromtxt: Empty输入文件:“%s”' % fname)回溯(最近一次调用):文件“Collector2.py”,第 81 行,在 LLS 中,DLAs = np.genfromtxt(r'output/Images/MW_Size/covering_fractions.txt' , comments='#', usecols = (0,1), unpack=True) ValueError: 需要 0 个以上的值来解包
这就是为什么我决定以最简单的形式保留代码段而不使用该页面中的任何建议:
covering_fraction_data = "output/Images/MW_Size/covering_fractions.txt"
with open(covering_fraction_data,"mode") as fName:
print('{:.2e} {:.2e}'.format(lls_number/grid_number, dla_number/grid_number), file=fName)
fName.close()
Run Code Online (Sandbox Code Playgroud)
每次运行模拟都会生成 3 行,应将其打印到文件中。当mode是 'a' 时,将生成的三行添加到现有文件中,生成一个包含三行以上的文本文件,因为它已经包含了一些内容。将'a'改为'w'后,文本文件中不是打印了3行,而是只打印了1行;前两行被意外删除。
解决方法:
避免这一切的唯一方法是选择“a”mode并在运行代码之前手动删除文件的内容。这样,在运行代码后,文本文件中只生成了三行,这是预期的输出。
题:
所以,我的问题基本上是,“我怎么能修改上面的代码进行实际的文件删除自动和之前它充满了三个新行?”
非常感谢您的帮助。
问题
我编写了一个代码,将一些历史数据作为输入。假设数据集具有timeseries格式,我正在尝试进行回归并找到预测变量。
代码
对于我的项目,我有四个文件:my_project.py、utilities.py、plotter.py和constants.py. 这是两个脚本的一些小部分(相关导入):
my_project.py:
从时间导入 perf_counter
来自常量导入(输出目录、数据路径、输出文件)
从实用程序导入(dataframe_in_nutshell、excel_reader、info_printer、sys、module_creator、process_discovery、data_explanatory_analysis、excel_reader、df_cleaner、feature_extractor、ml_modelling)
从绘图仪导入绘图仪
utilities.py
导入操作系统
导入系统导入检查
从 pathlib 导入路径
输入 import (可迭代、列表、元组、可选)
从 itertools 导入 zip_longest
将 matplotlib.pyplot 导入为 plt
将 statsmodels.tsa.api 导入为 smt
将 statsmodels.api 导入为 sm
将 pandas 导入为 pd
从 sklearn.metrics 导入mean_absolute_error
从 sklearn.preprocessing 导入规模
从 pycaret.regression 导入(设置、compare_models、predict_model、plot_model、finalize_model、load_model)
导入 csv
来自常量导入(np,路径,nan_value,plots_dir,HOURS_PER_WEEK,LAGS_STEP_NUM,rc_params,NA_VALUES,COLUMNS_NAMES,string_columns,LAGS_LABELS,numeric_columns,output_dir,DATAPATH,dtype_dict,train_size)
从 pprint 导入 PrettyPrinter
pp = PrettyPrinter()
将seaborn导入为sns
sns.set()
错误信息
Traceback (most recent call last):
File "c:\Users\username\OneDrive\Desktop\project\my_project.py", …Run Code Online (Sandbox Code Playgroud) 这是我从matplotlib 示例示例中借用的代码,稍作修改,为带有正确放置标签的图像生成水平颜色条:
from matplotlib import colors
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
cmap = "cool"
fig, axs = plt.subplots()
# Generate data with a range that varies from one plot to the next.
data = (1 / 10) * np.random.rand(10, 20) * 1e-6
image = axs.imshow(data, cmap=cmap)
axs.label_outer()
# Find the min and max of all colors for use in setting the color scale.
vmin = image.get_array().min()
vmax = image.get_array().max()
norm = colors.Normalize(vmin=vmin, vmax=vmax)
cbar …Run Code Online (Sandbox Code Playgroud) 在2d平面上,有一个以(0,0)为中心的大圆,半径为.它包含约100个左右的较小圆圈,这些圆圈在父圆上随机分布,否则具有相对于原点的已知半径和位置.(有些较小的子圆可能部分或全部位于较大的子圆内.)
整个平面均匀地网格化为像素,边长为水平和垂直(沿坐标轴).像素的大小是固定的并且是先验已知的,但是远小于父圆的大小; 在父圆圈上有大约1000个特殊像素的顺序.我们给出了所有这些特殊网格(的中心)的2D笛卡尔坐标.包含这些特殊网格中的至少一个的那些子圆被命名为*特殊的"子圆圈以供以后使用.
现在,想象一下所有这个3d空间都充满了~100,000,000个粒子.我的代码尝试在每个特殊子圈内添加这些粒子.
我设法调试我的代码,但似乎当我处理如此大量的粒子时,它很慢,如下所示.我想看看我是否可以使用任何技巧来加速它至少一个数量级.
.
.
.
for x, y in zip(vals1, vals2): # vals1, vals2 are the 2d position array of the *special* grids each with a 1d array of size ~1000
enclosing_circles, sub_circle_catalog, some_parameter_catalog, totals = {}, [], [], {}
for id, mass in zip(ids_data, masss_data): # These two arrays are equal in size equal to an array of size ~100,000,000
rule1 = some_condition # this check if each special grid is within each circle …Run Code Online (Sandbox Code Playgroud) python ×3
python-3.x ×3
axis-labels ×1
colorbar ×1
file-io ×1
for-loop ×1
if-statement ×1
image ×1
matplotlib ×1
nested-loops ×1
numba ×1
optimization ×1
performance ×1
pycaret ×1
regression ×1
scipy ×1
seek ×1
system-error ×1