小编Mar*_*iet的帖子

连接第四维中的两个numpy数组

我有两个三维(3 x 4 x 5)的numpy数组,我想连接它们,所以结果有四个维度(3 x 4 x 5 x 2).在Matlab中,这可以使用cat(4, a, b),但不能在Numpy中完成.

例如:

a = ones((3,4,5))
b = ones((3,4,5))
c = concatenate((a,b), axis=3) # error!
Run Code Online (Sandbox Code Playgroud)

为了澄清,我希望c[:,:,:,0]c[:,:,:,1]对应原始的两个数组.

python numpy

27
推荐指数
4
解决办法
2万
查看次数

Git:可以假冒标签的签约日期吗?

作为一名科学家,我想保留一些关于我在Git存储库中检查内容的正式记录.这是为了后来支持谁在例如专利纠纷中首先发明了什么.

目前我不时向我的存储库添加一个标签,如下所示:

git tag -s -m "`date`" 2012-08-20
Run Code Online (Sandbox Code Playgroud)

并将标签推送到中央服务器:

git push --tags
Run Code Online (Sandbox Code Playgroud)

拉出标签会显示我用我的密钥签名的日期:

git tag -v 2012-08-20
object 2d6f6035270e8e44c035431e99be8da3fccee095
type commit
tag 2012-08-20
tagger My Full Name <name@institution> 1345466433 +0200

Mon Aug 20 14:40:33 CEST 2012
gpg: Signature made Mon Aug 20 14:40:37 2012 CEST using RSA key ID somekey
gpg: Good signature from "My Full Name <name@institution>"
gpg:                 aka "My Full Name <personal-email>"
Run Code Online (Sandbox Code Playgroud)

我的问题是这些日期有多安全?以后有可能篡改它们吗?

编辑:为了进一步阐明,我希望能够证明我以后篡改标签是不太可能的.

git security gnupg

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

为什么MATLAB无法绘制"工厂"这个词?

考虑以下MATLAB代码:

text(0, 0, 'factory');
xlim([-1, 1]);
ylim([-1, 1]);
Run Code Online (Sandbox Code Playgroud)

预期的目标是在其中加上一个带有"factory"字样的图形.没有字出现.现在用任何其他单词替换"factory"一词,上面的代码按预期工作.这已经过MATLAB 2017b和2015b的测试

有谁知道这里发生了什么?

matlab matlab-figure

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

在 Rust 中,如何从 HashMap 的键创建 HashSet?

我有两个HashMaps 并且想要计算键的交集。是否有可能HashSet从任何HashMap::keys()回报中构建一个?例如:

use std::collections::{HashSet, HashMap};

fn main() {
    let mut map1: HashMap<i64, i64> = HashMap::new();
    let mut map2: HashMap<i64, i64> = HashMap::new();

    // Add some values into the HashMaps for demonstration
    map1.insert(1, 10);
    map1.insert(5, 50);
    map2.insert(3, 30);
    map2.insert(5, 50);

    let set1: HashSet<i64> = HashSet::from(map1.keys());  // How to do this?
    let set2: HashSet<i64> = HashSet::from(map2.keys());  // How to do this?

    let set3 = set1.intersection(&set2); // What I'm looking to accomplish
    // set3 should contain [5], …
Run Code Online (Sandbox Code Playgroud)

rust

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

将图像从Matlab传输到OpenCV IplImage

我在Matlab中有一个图像:

img = imopen('image.jpg')

返回uint8数组高度x宽x通道(3通道:RGB).

现在我想使用openCV对它进行一些操作,所以我写了一个MEX文件,它将图像作为参数并从中构造一个IplImage:

#include "mex.h"
#include "cv.h"

void mexFunction(int nlhs, mxArray **plhs, int nrhs, const mxArray **prhs) {
    char *matlabImage = (char *)mxGetData(prhs[0]);
    const mwSize *dim = mxGetDimensions(prhs[0]);

    CvSize size;
    size.height = dim[0];
    size.width = dim[1];

    IplImage *iplImage = cvCreateImageHeader(size, IPL_DEPTH_8U, dim[2]);
    iplImage->imageData = matlabImage;
    iplImage->imageDataOrigin = iplImage->imageData;

    /* Show the openCV image */
    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
    cvShowImage("mainWin", iplImage);
}
Run Code Online (Sandbox Code Playgroud)

这个结果看起来完全错误,因为openCV使用除matlab之外的其他约定来存储图像(例如,它们交错颜色通道).

任何人都可以解释约定的差异,并给出如何正确显示图像的一些指示?

matlab opencv

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

将Ipython名称空间转移到ipdb

我正处于ipython会话的中间.我加载了一个foo包含函数的模块foo.bar.在工作的时候,我注意到foo.bar当我输入一些输入时给出了一些奇怪的输出x,其中x是我本地ipython范围中的一个变量.我想调查调试器中的行为.

如何在调试器中设置断点foo.bar并运行foo.bar(x)

我知道pdb.set_trace(),但它需要我打开foo模块的代码手动插入断点,保存它,在ipython中重新加载模块等.必须有一个更好的方法.

python debugging ipython

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

Pandas 在某个级别对行进行洗牌

我有一个在行上DataFrame使用 a的 Pandas MultiIndex

index = pandas.MultiIndex.from_tuples(list(itertools.product(range(3), range(3))))
df = pandas.DataFrame(numpy.random.randn(9,3), index=index, columns=['A', 'B', 'C'])

            A         B         C
0 0  2.400417  0.698638  1.231540
  1 -0.023154 -2.110450  0.774964
  2 -1.282392 -0.062794  1.471655
1 0 -1.081853  0.261876 -1.771075
  1 -2.013747 -0.377957 -0.393802
  2  1.711172 -0.552468  1.018727
2 0  0.155821 -0.222691  0.496586
  1  0.563638 -0.756709  1.050212
  2 -1.446159 -0.891549  0.256695
Run Code Online (Sandbox Code Playgroud)

我想在索引的第一级打乱这个 DataFrame,所以可能的结果是:

            A         B         C
1 0 -1.081853  0.261876 -1.771075
  1 -2.013747 -0.377957 -0.393802
  2  1.711172 -0.552468  1.018727
0 0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

有效地计算50Hz的信号含量

问题陈述

我有一个很长的信号(454912个样本),我想计算出50Hz的估计量.速度比精度更重要.预计50Hz的量随时间波动.该值必须代表整个记录,例如平均值.

上下文

从EEG电极记录信号.当EEG电极与头皮接触不良时,信号中会有大量50Hz的电力线噪声.我想丢弃EEG电极的所有数据,这些数据的噪声比其他电极高50Hz.

解决了尝试

解决问题并不难.从FFT到Welch方法的任何方法都可用于估算功率谱:

import numpy as np
from scipy.signal import welch

# generate an example signal
sfreq = 128.
nsamples = 454912
time = np.arange(nsamples) / sfreq
x = np.sin(2 * np.pi * 50 * time) + np.random.randn(nsamples)

# apply Welch' method to the problem
fs, ps = welch(x, sfreq)
print 'Amount of 50Hz:', ps[np.searchsorted(fs, 50)]
Run Code Online (Sandbox Code Playgroud)

然而,在这里计算所有频率的功率似乎是不必要的,我觉得有一个更有效的解决方案.计算单个DFFT步骤的东西是什么?用一些sinoid小波卷积?

python signal-processing numpy scipy

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

解析逃脱角色

使用Python,我试图解析这样的字符串:

"hello" "I am an example" "the man said:\"hello!\""
Run Code Online (Sandbox Code Playgroud)

进入这些代币:

1) hello
2) I am an example
3) the man said: "hello!"
Run Code Online (Sandbox Code Playgroud)

类似的东西re.findall(r'"[^"]*"', str)接近,但无法处理转义字符(\).我很好奇有什么样的pythonic方法可以处理转义字符而不需要使用for循环或大型解析器包.

python parsing

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

如何有效地计算字符串单元格数组的字符串长度

我在Matlab中有一个单元格数组:

strings = {'one', 'two', 'three'};
Run Code Online (Sandbox Code Playgroud)

如何有效地计算所有三个字符串的长度?现在我使用for循环:

lengths = zeros(3,1);
for i = 1:3
    lengths(i) = length(strings{i});
end
Run Code Online (Sandbox Code Playgroud)

但是当你有大量的字符串时,这是不可用的(我有480,863个字符串).有什么建议?

string matlab

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