小编fil*_*ppo的帖子

Keras,附加回调日志

我有一个回调计算on_epoch_end验证数据中的几个额外指标和测试数据的每10个时期.

我还有一个CSVLogger将正常指标保存到日志文件的回调.

从我的回调中有一种简单的方法可以将一两列添加到正确编写的日志中CSVLogger吗?

logging callback keras

11
推荐指数
1
解决办法
4000
查看次数

在matplotlib线周围绘制边框

有没有一种正确的方法来绘制边框来勾勒出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)

在此输入图像描述

python transparency border matplotlib line

7
推荐指数
1
解决办法
716
查看次数

Pandas 时间序列重新采样,分箱似乎关闭

当我注意到这种奇怪的分箱时,我正在用我认为知道的有关大熊猫的一些东西回答另一个问题,即时间序列重采样。

假设我有一个包含每日日期范围索引的数据框和一个我想要重新采样和求和的列。

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 …

python time-series resampling pandas

6
推荐指数
1
解决办法
606
查看次数

如何仅从直方图值创建KDE?

我有一组要绘制高斯核密度估计值的值,但是我遇到两个问题:

  1. 我只有条形图的值而不是值本身
  2. 我正在绘制分类轴

这是我到目前为止生成的图: 直方图 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)

谢谢!

python numpy matplotlib scipy kernel-density

6
推荐指数
1
解决办法
729
查看次数

沉默的scipy警告

我正在使用ndimage插值缩放,我收到这个恼人的警告:

UserWarning:从scipy 0.13.0开始,zoom()的输出形状是用round()而不是int()计算的 - 对于这些输入,返回数组的大小已经改变.

我不确定我应该从中得到什么,我开始使用它与SciPy 1.0.0,所以我不相信它真的影响了我.

我认为称其为UserWarning有点值得怀疑,因为它不是供用户使用,但也许目标用户是导入库的开发人员.

我正在使用多处理,每个进程都会收到一个警告,甚至更烦人.

是否有一种理智的沉默方式?

numpy scipy ndimage

4
推荐指数
1
解决办法
1647
查看次数

pandas dataframe interleaved reordering

对不起,不太好的标题,可能更糟糕的问题.

我需要在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)

python pandas

3
推荐指数
1
解决办法
108
查看次数

SimpleITK,无需加载图像数组即可读取元数据

我正在使用 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)

有没有办法在不加载完整图像的情况下访问原点间距和方向?

python medical simpleitk

2
推荐指数
1
解决办法
1804
查看次数

在 matplotlib 中将 3D 背景更改为黑色

我无法将 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)

python matplotlib mplot3d

2
推荐指数
1
解决办法
3998
查看次数

将所有数据框列连接到一个列中

我有一个大致类似的数据框:

        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)

python datetime concatenation time-series pandas

2
推荐指数
1
解决办法
53
查看次数

Pandas,用给定列的平均值替换行

我对 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 numpy pandas

0
推荐指数
1
解决办法
1025
查看次数