我有一个回调计算on_epoch_end
验证数据中的几个额外指标和测试数据的每10个时期.
我还有一个CSVLogger
将正常指标保存到日志文件的回调.
从我的回调中有一种简单的方法可以将一两列添加到正确编写的日志中CSVLogger
吗?
有没有一种正确的方法来绘制边框来勾勒出matplotlib图?
到目前为止我发现的最好的是这个答案[ 1 ]和一个matplotlib教程[ 2 ],它matplotlib.patheffects
用于为轮廓绘制稍微粗的笔划.
我的问题是,它打破了半透明的情节,如果你设置alpha < 1.0
你会看到主要背后的完整笔划,而我想要一个真正的边框.有没有办法画出真正的轮廓?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patheffects as mpe
outline=mpe.withStroke(linewidth=8, foreground='black')
x = np.linspace(0, 2*np.pi, 1000)
plt.plot(x, np.sin(x), lw=5, color='red', path_effects=[outline],
label="stroke no alpha")
plt.plot(x, np.sin(x-np.pi/3.), lw=5, alpha=0.5, color='red', path_effects=[outline],
label="stroke with alpha")
plt.plot(x, np.sin(x-2*np.pi/3.), lw=5, alpha=0.5, color='red',
label="no stroke with alpha")
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
当我注意到这种奇怪的分箱时,我正在用我认为知道的有关大熊猫的一些东西回答另一个问题,即时间序列重采样。
假设我有一个包含每日日期范围索引的数据框和一个我想要重新采样和求和的列。
index = pd.date_range(start="1/1/2018", end="31/12/2018")
df = pd.DataFrame(np.random.randint(100, size=len(index)),
columns=["sales"], index=index)
>>> df.head()
sales
2018-01-01 66
2018-01-02 18
2018-01-03 45
2018-01-04 92
2018-01-05 76
Run Code Online (Sandbox Code Playgroud)
现在我重新采样一个月,一切看起来都很好:
>>>df.resample("1M").sum()
sales
2018-01-31 1507
2018-02-28 1186
2018-03-31 1382
[...]
2018-11-30 1342
2018-12-31 1337
Run Code Online (Sandbox Code Playgroud)
如果我尝试在更多个月内重新采样,尽管分箱开始出现问题。这一点尤其明显6M
df.resample("6M").sum()
sales
2018-01-31 1507
2018-07-31 8393
2019-01-31 7283
Run Code Online (Sandbox Code Playgroud)
第一个 bin 跨越一个多月,最后一个 bin 跨度为一个月。也许我必须设置closed="left"
以获得适当的限制:
df.resample("6M", closed="left").sum()
sales
2018-06-30 8090
2018-12-31 9054
2019-06-30 39
Run Code Online (Sandbox Code Playgroud)
现在我在 2019 年有一个额外的垃圾箱,里面有 2018-12-31 的数据......
这工作正常吗?我错过了我应该设置的任何选项吗?
编辑:这是我希望以六个月为间隔重新采样一年的输出,第一个间隔从 1 月 1 日到 6 月 30 …
我有一组要绘制高斯核密度估计值的值,但是我遇到两个问题:
这是我到目前为止生成的图:
y轴的顺序实际上是相关的,因为它代表每种细菌物种的系统发育。
我想为每种颜色添加一个高斯kde叠加层,但是到目前为止,我还无法利用seaborn或scipy做到这一点。
这是上面使用python和matplotlib分组的条形图的代码:
enterN = len(color1_plotting_values)
fig, ax = plt.subplots(figsize=(20,30))
ind = np.arange(N) # the x locations for the groups
width = .5 # the width of the bars
p1 = ax.barh(Species_Ordering.Species.values, color1_plotting_values, width, label='Color1', log=True)
p2 = ax.barh(Species_Ordering.Species.values, color2_plotting_values, width, label='Color2', log=True)
for b in p2:
b.xy = (b.xy[0], b.xy[1]+width)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用ndimage插值缩放,我收到这个恼人的警告:
UserWarning:从scipy 0.13.0开始,zoom()的输出形状是用round()而不是int()计算的 - 对于这些输入,返回数组的大小已经改变.
我不确定我应该从中得到什么,我开始使用它与SciPy 1.0.0,所以我不相信它真的影响了我.
我认为称其为UserWarning有点值得怀疑,因为它不是供用户使用,但也许目标用户是导入库的开发人员.
我正在使用多处理,每个进程都会收到一个警告,甚至更烦人.
是否有一种理智的沉默方式?
对不起,不太好的标题,可能更糟糕的问题.
我需要在pandas数据帧上执行一个超级简单的操作,但我显然错过了它的调用方式,因此无法找到正确的搜索关键字.
给出类似的数据帧
a b c
0 0 46 14
1 0 7 14
2 0 46 19
3 0 7 19
4 1 46 14
5 1 7 14
6 1 46 19
7 1 7 19
Run Code Online (Sandbox Code Playgroud)
我需要重新排序行以获取
a b c
0 0 46 14
4 1 46 14
1 0 7 14
5 1 7 14
2 0 46 19
6 1 46 19
3 0 7 19
7 1 7 19
Run Code Online (Sandbox Code Playgroud)
另一个简单但可能不那么含糊的例子.我想从中得到
a
0 0
1 0 …
Run Code Online (Sandbox Code Playgroud) 我正在使用 SimpleITK 来读取 MetaImage 数据。
有时我只需要访问元数据(它存储在一个 key=value .mhd 文件中),但我发现这样做的唯一方法是调用ReadImage
它,因为它将整个数组加载到内存中时非常慢。
import SimpleITK as sitk
mhd = sitk.ReadImage(filename)
origin = mhd.GetOrigin()
spacing = mhd.GetSpacing()
direction = mhd.GetDirection()
Run Code Online (Sandbox Code Playgroud)
有没有办法在不加载完整图像的情况下访问原点间距和方向?
我无法将 3d 图形的背景更改为黑色。这是我目前的代码。当我将 facecolor 设置为黑色时,它会将图形内部更改为灰色,这不是我想要的。
fig = plt.figure()
fig.set_size_inches(10,10)
ax = plt.axes(projection='3d')
ax.grid(False)
ax.xaxis.pane.set_edgecolor('b')
ax.yaxis.pane.set_edgecolor('b')
ax.zaxis.pane.set_edgecolor('b')
# plt.gca().patch.set_facecolor('white')
# plt.axis('On')
fig.patch.set_facecolor('black')
ax.scatter(xs = Z['PC1'], ys = Z['PC2'], zs = Z['PC3'], c = Z['color'], s = 90, depthshade= False)
ax.set(title = 'test', xlabel = 'PC1', ylabel = 'PC2', zlabel = 'PC3')
Run Code Online (Sandbox Code Playgroud) 我有一个大致类似的数据框:
01/01/19 02/01/19 03/01/19 04/01/19
hour
1.0 27.08 47.73 54.24 10.0
2.0 26.06 49.53 46.09 22.0
...
24.0 12.0 34.0 22.0 40.0
Run Code Online (Sandbox Code Playgroud)
我想通过连接所有列的适当日期索引将其尺寸减小为一列。有没有聪明的大熊猫可以做到这一点?
预期结果...类似:
01/01/19 00:00:00 27.08
01/01/19 01:00:00 26.08
...
01/01/19 23:00:00 12.00
02/01/19 00:00:00 47.73
02/01/19 01:00:00 49.53
...
02/01/19 23:00:00 34.00
...
Run Code Online (Sandbox Code Playgroud) 我对 Pandas 还很陌生,不幸的是目前我没有太多时间来深入研究它。
我有一个像这样的数据框:
x y z class id other-numeric-field
0 8 8 5 1 1014f 0.388640
1 2 3 4 0 3ba1d 0.431008
2 5 1 6 1 1014f 0.388640
3 7 9 6 1 1014f 0.388640
4 6 9 1 0 7a5d7 0.476972
Run Code Online (Sandbox Code Playgroud)
我想将所有行替换为class
与列的平均值相同的行['x', 'y', 'z']
。
数据框可以包含其他列,无论是否为数字,这些列在同一类中通常都是相等的,但如果它们不是,我真的不在乎丢失。如果它也适用于非数字字段,我可以保留第一次出现或只是对它们进行平均。
python ×8
pandas ×4
matplotlib ×3
numpy ×3
scipy ×2
time-series ×2
border ×1
callback ×1
datetime ×1
keras ×1
line ×1
logging ×1
medical ×1
mplot3d ×1
ndimage ×1
resampling ×1
simpleitk ×1
transparency ×1