我有两个三维(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]
对应原始的两个数组.
作为一名科学家,我想保留一些关于我在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)
我的问题是这些日期有多安全?以后有可能篡改它们吗?
编辑:为了进一步阐明,我希望能够证明我以后篡改标签是不太可能的.
考虑以下MATLAB代码:
text(0, 0, 'factory');
xlim([-1, 1]);
ylim([-1, 1]);
Run Code Online (Sandbox Code Playgroud)
预期的目标是在其中加上一个带有"factory"字样的图形.没有字出现.现在用任何其他单词替换"factory"一词,上面的代码按预期工作.这已经过MATLAB 2017b和2015b的测试
有谁知道这里发生了什么?
我有两个HashMap
s 并且想要计算键的交集。是否有可能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) 我在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之外的其他约定来存储图像(例如,它们交错颜色通道).
任何人都可以解释约定的差异,并给出如何正确显示图像的一些指示?
我正处于ipython会话的中间.我加载了一个foo
包含函数的模块foo.bar
.在工作的时候,我注意到foo.bar
当我输入一些输入时给出了一些奇怪的输出x
,其中x
是我本地ipython范围中的一个变量.我想调查调试器中的行为.
如何在调试器中设置断点foo.bar
并运行foo.bar(x)
?
我知道pdb.set_trace()
,但它需要我打开foo
模块的代码手动插入断点,保存它,在ipython中重新加载模块等.必须有一个更好的方法.
我有一个在行上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) 我有一个很长的信号(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,我试图解析这样的字符串:
"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循环或大型解析器包.
我在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个字符串).有什么建议?