我们如何在 ruby 中设置种子,以便任何依赖于 RNG 的函数都返回相同的结果(例如类似于 python 的random.seed() )?
因此,我尝试将在 for 循环中创建的多个绘图保存到单个 pdf 文件中。我在 SO 上进行了搜索,并拼凑了一些似乎可以工作的代码,除了它不保存它创建的 pdf 中的数字,但其中没有任何内容。
这是重现它的代码:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
dftest = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),
columns=['a', 'b', 'c', 'd', 'e'])
from matplotlib.backends.backend_pdf import PdfPages
with PdfPages('count.pdf') as pdf_pages:
df1 = dftest.select_dtypes([np.int, np.float, np.object])
for i, col in enumerate(df1.columns):
plt.figure(i)
countplot = sns.countplot(x=col, data=df1)
pdf_pages.savefig(countplot.fig)
Run Code Online (Sandbox Code Playgroud) 我的原始数据高度不平衡,如下所示:
df
Index Branch
1 10000
2 200
...
1000 1
...
10000 1
Run Code Online (Sandbox Code Playgroud)
如果我运行:
import seaborn as sns
sns.distplot(df['Branch'], bins=1000)
Run Code Online (Sandbox Code Playgroud)
结果如下:
是否有机会将可视化中 y 值的最大值固定为 0.06?并将 x 值调整为 1000 或其他值。
我需要在多次迁移中重用相同的方法。我的目标是避免代码重复。我尝试如下所示,将共享方法放入文件中lib/migration_helper.rb
并include MigrationHelper
在使用共享方法的迁移中使用。
是否有更标准的方式在不同的迁移中共享代码?
特别是,我将帮助程序文件放入lib
目录中 - 这是正确的位置吗?
## lib/migration_helper.rb
# Methods shared across migrations.
module MigrationHelper
def my_shared_method
# some shared code
end
end
Run Code Online (Sandbox Code Playgroud)
## db/migrate/do_something.rb
class DoSomething < ActiveRecord::Migration[5.2]
include MigrationHelper
# rubocop:disable Metrics/MethodLength
def up
# some code
my_shared_method
end
# rubocop:enable Metrics/MethodLength
def down
# more code
my_shared_method
end
Run Code Online (Sandbox Code Playgroud)
也可以看看:
我从这些问题中得到了一些想法,但它们并没有完全回答我的问题:
Rails 3.2 迁移的自定义帮助程序方法
Rails 在迁移之间共享代码(也称为关注点)
访问 Rails 3 迁移中的自定义帮助程序方法
这个存储库包含了我想要的更复杂版本的示例,以及整个帮助器层次结构。我需要一个更简单的解决方案:
https://gitlab.com/gitlab-org/gitlab-foss/blob/master/lib/gitlab/database/migration_helpers.rb
https://gitlab.com/gitlab-org/gitlab-foss //blob/master/db/migrate/20220808133824_add_timestamps_to_project_statistics.rb
是否可以在数据库事务中刷新物化视图?
我正在 Laravel 中为复杂查询编写测试用例,它使用事务在测试运行后回滚。
当我添加数据并刷新视图时 - 当我执行 select 语句时不会出现任何记录
我下载了1000个基因组数据(染色体1 -22),它是VCF格式的。如何将所有染色体合并到一个文件中?我应该首先将所有染色体转换为 plink 二进制文件,然后再执行吗--bmerge mmerge-list
?或者还有其他方法可以将它们结合起来吗?请问有什么建议吗?
我有一个 Postgres 项目,其中我的模型之一是Client,只需通过其主键进行索引。我在创建客户端时遇到了问题,因为有人创建了一个客户端,同时显式设置了我读过的主键,这不会影响 Postgres 的客户端序列表,该序列表负责在任何时候自动递增主键 1创建了一个 Client 对象。
我运行了一些 SQL 查询来研究它,发现当前序列值实际上比数据库中客户端的最高 ID 263 低 1,即 262,因此表明 ID 为 263 的客户端已经存在。我尝试在前端应用程序中创建一个客户端,再次收到错误,并决定重新运行查询。我看到数据库中没有像预期的那样创建新客户端,但我也注意到序列值确实达到了 263,因此当我尝试再次创建客户端时,它起作用了!
即使相关模型的创建失败,PostgreSQL 序列表也会递增,这是正常行为吗?如果是这样,这似乎可能会导致一些严重的问题。
我试图连接两个 DataFrame,生成的 DataFrame 按原始两个 DataFrame 的顺序保留索引。例如:
df = pd.DataFrame({'Houses':[10,20,30,40,50], 'Cities':[3,4,7,6,1]}, index = [1,2,4,6,8])
df2 = pd.DataFrame({'Houses':[15,25,35,45,55], 'Cities':[1,8,11,14,4]}, index = [0,3,5,7,9])
Run Code Online (Sandbox Code Playgroud)
使用pd.concat([df, df2])
只是将 df2 附加到 df1 的末尾。我试图将它们连接起来以产生正确的索引顺序(0 到 9)。
这与 perl 多行正则表达式有关,用于分隔段落内的注释,但仅关注正则表达式语法的单个问题。
根据perlre: Modifiers,/m
正则表达式修饰符意味着
将匹配的字符串视为多行。也就是说,将“^”和“$”从匹配字符串第一行的开头和最后一行的结尾更改为匹配字符串中每一行的开头和结尾。
因此,使用以下代码:
#!/usr/bin/perl
use strict; use warnings;
$/ = ''; # one paragraph at a time
while(<DATA>)
{
print "original:\n";
print;
s/^([^B]*)(B.*?)$/>$1|$2</mg;
print "\n\nafter substitution:\n";
print;
}
__DATA__
aaaaBaBaBB
bbbbBbadbe
cccc
dddd
eeeeBeeeee
ffff
gggg
Run Code Online (Sandbox Code Playgroud)
我期望正则表达式引擎的行为如下。
第 1 行:匹配,因为它会找到该行开头和结尾之间的两种模式。
第 2 行:同上。
第 3 行:不匹配。第一个正则表达式组(在第一组括号中)匹配。但是当我们到达该行的末尾时,我们仍在寻找B,以开始第二个正则表达式组。由于我们已经指定了/m
,因此该特定行的末尾意味着我们已到达$
但未满足整个模式。
第 4 行:我们开始一个新行,因此我们遇到一个新的^
. 再次,没有匹配。
第 5 行:匹配。两个正则表达式组都位于行的开头和结尾之间,即在^
和 之间$
,完全按照指定。
因此我希望看到
>aaaa|BaBaBB< …
Run Code Online (Sandbox Code Playgroud) 在测试(而非生产)数据库上运行下面的 ActiveRecord 迁移时,db/structure.sql
会出现较大的变化。这是可重现的。变化是:
它们是否与生产数据库服务器上的 postgresql 版本和在测试数据库上执行迁移的计算机上的 postgresql 版本不匹配有关?
这些不相关的更改使git diff
输出的用处大大降低。GitHub 上的结果也是如此diff
。
在下面这个最小的示例中,仅重新排列了一些表。但在现实生活中(较大的)迁移中,它改变了数十个表、视图和 matview 的顺序 - 这是一个巨大的变化。
class FixFooBarBaz < ActiveRecord::Migration[5.2]
def up
sql = <<~SQL
DROP VIEW master_foo;
DROP VIEW IF EXISTS bar1;
CREATE OR REPLACE VIEW bar1 AS
SELECT * FROM baz1
UNION ALL
SELECT * FROM baz2;
CREATE OR REPLACE VIEW master_foo AS
SELECT …
Run Code Online (Sandbox Code Playgroud) postgresql ×3
python ×3
ruby ×3
activerecord ×2
seaborn ×2
axis ×1
genetics ×1
helper ×1
histogram ×1
indexing ×1
migration ×1
multiline ×1
pandas ×1
pdf ×1
perl ×1
plot ×1
random-seed ×1
range ×1
regex ×1
regex-group ×1
rollback ×1
sorting ×1
sql ×1
transactions ×1