小编Dav*_*ley的帖子

Postgres:\ .sql文件中的复制语法错误

我正在尝试编写一个脚本,将交叉表查询中的数据复制到Postgres 8.4中的.csv文件中.我能够在psql命令行中运行该命令,但是当我将命令放在一个文件中并使用该-f选项运行它时,我收到语法错误.

这是我正在看的一个例子(从这个伟大的答案):

CREATE TEMP TABLE t (
  section   text
 ,status    text
 ,ct        integer 
);

INSERT INTO t VALUES
 ('A', 'Active', 1), ('A', 'Inactive', 2)
,('B', 'Active', 4), ('B', 'Inactive', 5)
                   , ('C', 'Inactive', 7);

\copy (
SELECT * FROM crosstab(
       'SELECT section, status, ct
        FROM   t
        ORDER  BY 1,2' 
       ,$$VALUES ('Active'::text), ('Inactive')$$)
AS ct ("Section" text, "Active" int, "Inactive" int)
) TO 'test.csv' HEADER CSV
Run Code Online (Sandbox Code Playgroud)

然后我运行它并得到以下语法错误:

$ psql [system specific] -f copy_test.sql
CREATE TABLE
INSERT …
Run Code Online (Sandbox Code Playgroud)

csv postgresql crosstab

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

Pandas groupby:百分比高于阈值

我有一个DataFrame,我正在寻找使用groupby,但我正在寻找一些不寻常的功能来聚合.我想让每组中的观察百分比高于某个阈值.例如,阈值为0的DataFrame

df = pd.DataFrame(dict(day=[1, 1, 1, 2, 2, 2, 3, 3, 3, 4], value=[0, 4, 0, 4, 0, 4, 0, 4, 0, 4]))

df
   day  value
0    1      0
1    1      4
2    1      0
3    2      4
4    2      0
5    2      4
6    3      0
7    3      4
8    3      0
9    4      4
Run Code Online (Sandbox Code Playgroud)

应该成为

df_group = pd.DataFrame(dict(day=[1, 2, 3, 4], value=[.33, .67, .33, 1.0]))

df_group
   day  value
0    1   0.33
1    2   0.67
2    3 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

时间序列聚合效率

我通常需要用给定的聚合函数(即求和,平均等)来总结具有不规则定时的时间序列.但是,我目前的解决方案似乎效率低,速度慢.

采取聚合功能:

function aggArray = aggregate(array, groupIndex, collapseFn)

groups = unique(groupIndex, 'rows');
aggArray = nan(size(groups, 1), size(array, 2));

for iGr = 1:size(groups,1)
    grIdx = all(groupIndex == repmat(groups(iGr,:), [size(groupIndex,1), 1]), 2);
    for iSer = 1:size(array, 2)
      aggArray(iGr,iSer) = collapseFn(array(grIdx,iSer));
    end
end

end
Run Code Online (Sandbox Code Playgroud)

请注意这两个arraygroupIndex可2D.每个列array都是要聚合的独立系列,但groupIndex应将这些列合在一起(作为一行)以指定句点.

然后当我们给它带来一个不规则的时间序列时(注意第二个周期是一个基本周期更长),时间结果很差:

a = rand(20006,10);
b = transpose([ones(1,5) 2*ones(1,6) sort(repmat((3:4001), [1 5]))]);

tic; aggregate(a, b, @sum); toc
Elapsed time is 1.370001 seconds.
Run Code Online (Sandbox Code Playgroud)

使用分析器,我们可以发现该grpIdx行大约占执行时间的1/4(.28秒),iSer循环大约需要3/4(1.17秒)的总时间(1.48秒).

将此与期间无关紧要的情况相比较:

tic; cumsum(a); toc …
Run Code Online (Sandbox Code Playgroud)

matlab time-series

8
推荐指数
3
解决办法
681
查看次数

参数类型创建

我正在努力理解朱莉娅中的参数类型创建.我知道我可以使用以下内容创建一个类型:

type EconData
    values
    dates::Array{Date}
    colnames::Array{ASCIIString}

    function EconData(values, dates, colnames)
    if size(values, 1) != size(dates, 1)
        error("Date/data dimension mismatch.")
    end
    if size(values, 2) != size(colnames, 2)
        error("Name/data dimension mismatch.")
    end
    new(values, dates, colnames)
    end
end

ed1 = EconData([1;2;3], [Date(2014,1), Date(2014,2), Date(2014,3)], ["series"])
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何指定values将如何键入.做我喜欢的事似乎合情合理

type EconData{T}
   values::Array{T}
   ...
   function EconData(values::Array{T}, dates, colnames)
   ...
Run Code Online (Sandbox Code Playgroud)

但是,这(和类似的尝试)只是产生和错误:

ERROR: `EconData{T}` has no method matching EconData{T}(::Array{Int64,1}, ::Array{Date,1}, ::Array{ASCIIString,2})
Run Code Online (Sandbox Code Playgroud)

我该如何指定类型values

julia

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

在TestCase.verifyEqual中混合Absolute和Relative Tolerances

我有一些用基于类的单元测试框架编写的测试用例,我确保我正在进行的分析梯度计算与数值计算版本相当接近.问题是,对于我正在运行的测试用例,梯度的比例变化很大.这意味着虽然我想使用AbsTolName-Value对,但在某些情况下,测试通常会因我认为可接受的误差范围而RelTol失败,而在我认为可接受的情况下也会失败.例如,

expected = [1e7 1e-7];
actual = [1e7+1 1e-5];

AbsTol = abs(expected-actual)
RelTol = abs((expected-actual)./expected)
Run Code Online (Sandbox Code Playgroud)

我认为这里的第一个元素是满足测试的,因为它在相对方面非常接近,而第二个元素在这里满足测试,因为它的绝对值接近,但我认为没有办法测试两个元素是否满足.我知道我可以在外面进行比较verifyEqual,但这似乎是因为丢失了测试框架中包含的漂亮诊断.

有没有办法创建一个单元测试,我可以指定我正在考虑逐个元素比较哪个 AbsTolRelTol满足?

matlab unit-testing

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

Matlab XTickLabels警告

我在Matlab 2014b中有一个简单的情节.例如,为了这个例子:

b1 = bar(1:12, rand(12,1));
ax1 = gca;
Run Code Online (Sandbox Code Playgroud)

使用XTickLabels属性时会弹出以下警告消息:

xticklabels = ax1.XTickLabels;
Warning: The XTickLabels property will be removed in a future release. 
Run Code Online (Sandbox Code Playgroud)

此时使用的首选属性是什么?

matlab matlab-figure

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

合并多个单元格阵列

我的单元阵列S <1x4cell>包含4门单元阵列(<108x1cell>,<106x1cell>,<111x1cell>,<115x1cell>),其中每个都包含大约一百文件的路径列表.

我想合并它们以便获得一个包含所有路径的单个单元格.这样做有一个功能吗?

arrays merge matlab cell

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

酸洗大型NumPy阵列

我有一个很大的3d numpy数组,我想保留.我的第一种方法只是使用泡菜,但这似乎导致了一个解释不佳的错误.

test_rand = np.random.random((100000,200,50))
with open('models/test.pkl', 'wb') as save_file:
    pickle.dump(test_rand, save_file, -1)

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-18-511e30b08440> in <module>()
      1 with open('models/test.pkl', 'wb') as save_file:
----> 2         pickle.dump(test_rand, save_file, -1)
      3 

C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in dump(obj, file, protocol)
   1368 
   1369 def dump(obj, file, protocol=None):
-> 1370     Pickler(file, protocol).dump(obj)
   1371 
   1372 def dumps(obj, protocol=None):

C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in dump(self, obj)
    222         if self.proto >= 2:
    223             self.write(PROTO + chr(self.proto))
--> 224         self.save(obj)
    225         self.write(STOP)
    226 

C:\Users\g1dak02\AppData\Local\Continuum\Anaconda\lib\pickle.pyc in save(self, obj)
    329 
    330 …
Run Code Online (Sandbox Code Playgroud)

python numpy pickle

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