有没有办法在不绘制**的情况下获取直方图的“x”和“y”中的值?我在我的代码中多次(在每个循环中)使用下面的函数,我注意到我的代码在每个循环中变得越来越慢。
** 我不确定它在内部所做的是否是绘制图形,但我知道尽管使用了 plt.close(),但我的代码中的缓慢与函数“plt.hist”有关。谢谢你。
# a is a list
def function_hist(a, ini, final):
# 12 bins
bins = np.linspace(ini, final, 13)
weightsa = np.ones_like(a)/float(len(a))
y, x, _ = plt.hist(a, bins, weights = weightsa)
plt.close()
Run Code Online (Sandbox Code Playgroud) 我用一些技巧做的那个图只是为了代表我真正想要的东西,所以它不能很好地显示图例中粉红色标记的颜色。
图中圆圈代表两个不同模型的相同参数;三角形和方形标记也是如此。我想将两个引用相同参数的圆形标记放置在图例的第一行中,类似地,将其他两个标记放置在该标记下方的行上。谢谢。
代码:
import matplotlib.pyplot as plt
q1 = [100.0, 60.0, 200.0, 300.0]
NO1 = [0.35799999999999998, 0.33100000000000002, 0.22900000000000001, 0.17799999999999999]
No1 = [0.34599999999999997, 0.29899999999999999, 0.20699999999999999, 0.14999999999999999]
Nb1 = [0.46600000000000003, 0.45600000000000002, 0.27800000000000002, 0.24399999999999999]
q2 = [60.0, 100.0, 200.0, 300.0]
NO2 = [0.44700000000000001, 0.29199999999999998, 0.28299999999999997, 0.253]
No2 = [0.38900000000000001, 0.28499999999999998, 0.311, 0.251]
Nb2 = [0.44, 0.34899999999999998, 0.45900000000000002, 0.39400000000000002]
fig, ax = plt.subplots(figsize = (6,3))
ax.plot(q1, NO1, marker = 'o', markerfacecolor = 'none', markeredgewidth = 1, color = 'gray', linestyle = '', …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Ubuntu20 上安装 ifort 编译器。我从以下网站下载了安装文件:intel
这是一个扩展名为 .sh 的文件,我将其设为可执行文件:
Downloads$ chmod +x l_fortran-compiler_p_2021.1.2.62_offline.sh
Downloads$ ./l_fortran-compiler_p_2021.1.2.62_offline.sh
Run Code Online (Sandbox Code Playgroud)
这打开了软件安装程序:
但是,我无法使用 ifort 编译器。例子:
ifort -o name name.for
Run Code Online (Sandbox Code Playgroud)
它给出以下消息:
Command 'ifort' not found, did you mean:
command 'fort' from deb fort-validator (1.2.0-1)
command 'isort' from deb isort (4.3.4+ds1-2)
Try: sudo apt install <deb name>
Run Code Online (Sandbox Code Playgroud)
我需要安装 intel ifort 编译器,因为如果使用 -fast 选项编译,可执行文件会更快。
我想从其他列表(a,b,c)创建一个新列表(V)并使用一个函数,但我想利用python并将函数应用于三个列表而不是逐个元素.
例如,我有列表a,b和c; 应用函数后的结果应为V.谢谢.
def mag(a, b, c):
# something sophisticated
return (a+b)*c
a = [1, 5, 7]
b = [4, 8, 3]
c = [2, 6, 3]
V = [10, 78, 30]
Run Code Online (Sandbox Code Playgroud)