小编Til*_*ann的帖子

错过了在Java 8中修复JDBC日期处理的机会?

任何Java 8 + JDBC专家都能告诉我以下推理是否有问题吗?而且,如果在神的秘密中,为什么没有这样做?

A java.sql.Date当前是JDBC用于映射到DATE SQL类型的类型,它表示没有时间且没有时区的日期.但是这个类设计得非常好,因为它实际上是一个子类java.util.Date,它可以存储精确的瞬间,最长可达毫秒.

为了在数据库中表示日期2015-09-13,我们因此被迫选择一个时区,在该时区中将字符串"2015-09-13T00:00:00.000"解析为java.util.Date以获得毫秒value,然后java.sql.Date从这个毫秒值构造一个,最后调用setDate()预准备语句,传递一个包含所选时区的Calendar,以便JDBC驱动程序能够从这个毫秒值正确地重新计算日期2015-09-13.通过在任何地方使用默认时区,而不是传递日历,可以使此过程更简单一些.

Java 8引入了一个LocalDate类,它更适合DATE数据库类型,因为它不是精确的时刻,因此不依赖于时区.Java 8还引入了默认方法,这些方法允许对PreparedStatement和ResultSet接口进行向后兼容的更改.

那么,我们还没有错过一个清理JDBC中的混乱的大好机会,同时仍然保持向后兼容性?Java 8可以简单地将这些默认方法添加到PreparedStatement和ResultSet:

default public void setLocalDate(int parameterIndex, LocalDate localDate) {
    if (localDate == null) {
        setDate(parameterIndex, null);
    }
    else {
        ZoneId utc = ZoneId.of("UTC");
        java.util.Date utilDate = java.util.Date.from(localDate.atStartOfDay(utc).toInstant());
        Date sqlDate = new Date(utilDate.getTime());
        setDate(parameterIndex, sqlDate, Calendar.getInstance(TimeZone.getTimeZone(utc)));
    }
}

default LocalDate getLocalDate(int parameterIndex) {
    ZoneId utc = ZoneId.of("UTC");
    Date sqlDate = getDate(parameterIndex, Calendar.getInstance(TimeZone.getTimeZone(utc)));
    if (sqlDate == null) {
        return null;
    }

    java.util.Date utilDate …
Run Code Online (Sandbox Code Playgroud)

java date jdbc java-8

39
推荐指数
2
解决办法
9064
查看次数

如何逐行分析cython功能

我经常很难找到cython代码中的瓶颈.如何cython逐行分析功能?

profiling cython

27
推荐指数
3
解决办法
7357
查看次数

理解tensorflow中的`tf.nn.nce_loss()`

我试图了解Tensorflow中的NCE损失函数.NCE丢失用于word2vec任务,例如:

# Look up embeddings for inputs.
embeddings = tf.Variable(
    tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))
embed = tf.nn.embedding_lookup(embeddings, train_inputs)

# Construct the variables for the NCE loss
nce_weights = tf.Variable(
    tf.truncated_normal([vocabulary_size, embedding_size],
                        stddev=1.0 / math.sqrt(embedding_size)))
nce_biases = tf.Variable(tf.zeros([vocabulary_size]))

# Compute the average NCE loss for the batch.
# tf.nce_loss automatically draws a new sample of the negative labels each
# time we evaluate the loss.
loss = tf.reduce_mean(
    tf.nn.nce_loss(weights=nce_weights,
                   biases=nce_biases,
                   labels=train_labels,
                   inputs=embed,
                   num_sampled=num_sampled,
                   num_classes=vocabulary_size))
Run Code Online (Sandbox Code Playgroud)

更多细节请参考Tensorflow word2vec_basic.py

  1. NCE函数中的输入和输出矩阵是什么?

在word2vec模型中,我们感兴趣的是为单词构建表示.在训练过程中,给定一个滑动窗口,每个单词将有两个嵌入:1)当单词是中心单词时; 2)当单词是上下文单词时.这两个嵌入分别称为输入和输出向量.(输入和输出矩阵的更多解释) …

python tensorflow

20
推荐指数
1
解决办法
1万
查看次数

从pandas.DataFrame中绘制一个bootstrap示例

我想pandas.DataFrame尽可能有效地绘制一个bootstrap样本.将内置命令iloc与整数列表一起使用似乎很慢:

import pandas
import numpy as np
# Generate some data
n = 5000
values = np.random.uniform(size=(n, 5))
# Construct a pandas.DataFrame
columns = ['a', 'b', 'c', 'd', 'e']
df = pandas.DataFrame(values, columns=columns)
# Bootstrap
%timeit df.iloc[np.random.randint(n, size=n)]
# Out: 1000 loops, best of 3: 1.46 ms per loop
Run Code Online (Sandbox Code Playgroud)

索引numpy数组当然要快得多:

%timeit values[np.random.randint(n, size=n)]
# Out: 10000 loops, best of 3: 159 µs per loop
Run Code Online (Sandbox Code Playgroud)

但即使提取值,对numpy数组进行采样以及构建新值pandas.DataFrame也更快:

%timeit pandas.DataFrame(df.values[np.random.randint(n, size=n)], columns=columns)
# …
Run Code Online (Sandbox Code Playgroud)

numpy pandas

19
推荐指数
1
解决办法
8942
查看次数

"python"中的加权高斯核密度估计

目前不可能使用scipy.stats.gaussian_kde基于加权样本来估计随机变量的密度.有哪些方法可以根据加权样本估算连续随机变量的密度?

python statistics scipy kernel-density

12
推荐指数
1
解决办法
7226
查看次数

如何使用任意法线将matplotlib 2D贴片转换为3D?

简短的问题

如何使用任意法线将matplotlib 2D贴片转换为3D?

很长的问题

我想用3D投影在轴上绘制补丁.但是,mpl_toolkits.mplot3d.art3d提供的方法仅提供了沿主轴具有法线的补丁的方法.如何向具有任意法线的3d轴添加补丁?

3d matplotlib

10
推荐指数
2
解决办法
3529
查看次数

如何在分布式环境中使用Estimator API在Tensorboard中显示运行时统计信息

本文说明如何将运行时统计信息添加到Tensorboard:

    run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
    run_metadata = tf.RunMetadata()
    summary, _ = sess.run([merged, train_step],
                          feed_dict=feed_dict(True),
                          options=run_options,
                          run_metadata=run_metadata)
    train_writer.add_run_metadata(run_metadata, 'step%d' % i)
    train_writer.add_summary(summary, i)
    print('Adding run metadata for', i)
Run Code Online (Sandbox Code Playgroud)

在Tensorboard中创建以下详细信息:

Tensorboard中的运行时统计信息

这在单台机器上相当简单.如何使用Estimators在分布式环境中执行此操作?

python tensorflow tensorboard

10
推荐指数
2
解决办法
2687
查看次数

matplotlib.colors.LogNorm中的零问题

我正在使用绘制直方图

plt.imshow(hist2d, norm = LogNorm(), cmap = gray)
Run Code Online (Sandbox Code Playgroud)

其中hist2d是直方图值矩阵.这工作正常,除了元素hist2d为零.特别是,我获得了以下图像

直方图

但是希望白色斑块是黑色的.

谢谢!

matplotlib color-mapping

9
推荐指数
1
解决办法
6056
查看次数

来自Riemann的人工制品总和在scipy.signal.convolve中

简短摘要:如何快速计算两个数组的有限卷积?

问题描述

我试图获得由两个函数f(x),g(x)定义的有限卷积

有限卷积

为了实现这一点,我已经采用了离散的函数样本并将它们转换为长度数组steps:

xarray = [x * i / steps for i in range(steps)]
farray = [f(x) for x in xarray]
garray = [g(x) for x in xarray]
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用该scipy.signal.convolve函数计算卷积.此函数提供与此处conv建议的算法相同的结果.但是,结果与分析解决方案有很大不同.修改算法以使用梯形规则可得到所需的结果.conv

为了说明这一点,我让

f(x) = exp(-x)
g(x) = 2 * exp(-2 * x)
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

这里Riemann代表一个简单的黎曼和,trapezoidal是一个使用梯形法则的黎曼算法的修改版本,scipy.signal.convolve是scipy函数,analytical是分析卷积.

现在让g(x) = x^2 * exp(-x)结果变成:

在此输入图像描述

这里'比'是从scipy到分析值得到的值的比率.以上表明通过对积分进行重整化不能解决问题.

这个问题

是否可以使用scipy的速度但保留梯形规则的更好结果,或者我是否必须编写C扩展来实现所需的结果?

一个例子

只需复制并粘贴下面的代码即可查看我遇到的问题.通过增加steps变量可以使两个结果更加一致.我认为问题是由于右手黎曼和的假象,因为当积分增加时积分被高估并且随着它逐渐减小而再次接近解析解.

编辑:我现在已经包含了原始算法2作为比较,它给出了与scipy.signal.convolve函数相同的结果. …

python convolution scipy

8
推荐指数
1
解决办法
1353
查看次数

MongoDb - 删除所有空字段

简短的问题

如何删除null给定MongoDb集合的所有文档中的所有字段?

背景

我有一个存储在MongoDb数据库中的JSON文档集合,其中每个文档都是表单

{
    'property1': 'value1',
    'property2': 'value2',
    ...
}
Run Code Online (Sandbox Code Playgroud)

但每个文档可能有一个null条目而不是值条目.我想通过删除所有条目来节省磁盘空间null.null在我的情况下,条目的存在不包含任何信息,因为我先验地知道JSON文档的格式.

null mongodb

8
推荐指数
2
解决办法
8851
查看次数