if exist('JaccardDistance', 'file')==1
load('JaccardDistance');
else
% Do things
end
Run Code Online (Sandbox Code Playgroud)
文件JaccardDistance位于执行此代码的同一文件夹中.问题是"else"部分总是被执行,这意味着它没有意识到文件JaccardDistance存在.我究竟做错了什么?提前致谢.
我numpy.loadtext用来从CSV数据文件生成一个结构化的Numpy数组,我希望将其保存到一个MAT文件中给那些比Python更熟悉MATLAB的同事.
样例:
import numpy as np
import scipy.io
mydata = np.array([(1, 1.0), (2, 2.0)], dtype=[('foo', 'i'), ('bar', 'f')])
scipy.io.savemat('test.mat', mydata)
Run Code Online (Sandbox Code Playgroud)
当我尝试scipy.io.savemat在此数组上使用时,会抛出以下错误:
Traceback (most recent call last):
File "C:/Project Data/General Python/test.py", line 6, in <module>
scipy.io.savemat('test.mat', mydata)
File "C:\python35\lib\site-packages\scipy\io\matlab\mio.py", line 210, in savemat
MW.put_variables(mdict)
File "C:\python35\lib\site-packages\scipy\io\matlab\mio5.py", line 831, in put_variables
for name, var in mdict.items():
AttributeError: 'numpy.ndarray' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
我是一个Python新手(充其量),但我假设这是因为savemat设置为处理dicts并且Numpy的结构化数组的结构不兼容.
我可以通过将数据拉入dict来解决此错误:
tmp = {}
for varname in mydata.dtype.names:
tmp[varname] = mydata[varname]
scipy.io.savemat('test.mat', …Run Code Online (Sandbox Code Playgroud) 我试图呈现两个直方图,我希望它们中的每一个都有不同的颜色.让我们说一个红色和一个蓝色.到目前为止,我把改变了两者的颜色,但只改为相同的颜色.
这是代码
close all
b=-10:1:10;
x=randn(10^5,1);
x=(x+5)*3;
y=randn(1,10^5);
y=(y+2)*3;
hist(x,100)
hold on
hist(y,100);
h = findobj(gca,'Type','patch');
set(h,'FaceColor','r','EdgeColor','w')
%the last two lines changes the color of both hists.
Run Code Online (Sandbox Code Playgroud) 对不起这个非常愚蠢的问题.我是python中的自学初学者,我遇到使用函数并调用它的问题.我来自MATLAB背景,所以我试图做类似的事情.
使用的工具:Linux环境中的Python 2
作为测试,我创建了一个函数,我在名为prthis.py的文件中调用了prthis(用于"打印此").这个函数只需要一个数字作为输入,然后输出两个数字,分别是同一个数字和它的正方形.我这样定义:
#----------------------------------------
# content of the file prthis.py
#----------------------------------------
def prthis(x):
y=x*x
nb=x
return (y, nb)
#------------------------------------------
Run Code Online (Sandbox Code Playgroud)
然后,在python提示符下,我尝试调用新创建的prthis函数,我这样做:
>>> import prthis
>>> g,t = prthis(7)
Run Code Online (Sandbox Code Playgroud)
导入似乎是成功的,但是当我在两个输出变量上尝试函数g和t时,如上所述,我得到以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)
也许我对我的想法进行过多的MATLAB化.有没有人有关于如何处理这个问题的建议?
PS:这是我在stackexchange上的第一个问题,所以请你告诉我如何感谢/接受其他用户的有价值的答案?我不希望那些想要帮助的人感到忘恩负义.
我需要在MATLAB中创建一个没有浮点值的矩阵.例如,我创建了以下矩阵a:
a =
1.0000 0 0 0 25.0000
1.0000 0 1.0000 0 50.0000
1.0000 0 0 1.0000 50.0000
0 0 0 0 50.0000
0 0 0 0 50.0000
0 1.0000 1.0000 0 83.3333
Run Code Online (Sandbox Code Playgroud)
但我想要以下矩阵:
a =
1 0 0 0 25
1 0 1 0 50
1 0 0 1 50
0 0 0 0 50
0 0 0 0 50
0 1 1 0 83
Run Code Online (Sandbox Code Playgroud) 为什么以下生成两个匹配项,因此"xx"作为输出:
"Hello" -Replace '.*','x'
Run Code Online (Sandbox Code Playgroud)
虽然这只是生成一个匹配,因此只"x"在输出中:
"Hello" -Replace '^.*','x'
Run Code Online (Sandbox Code Playgroud)
我试图了解正则表达式的细微差别会导致第一个中的两个匹配?
您可以将其添加到https://regex101.com,它还会报告第一场比赛的两场比赛,"Hello"第二场比赛是""
由于无法提供完全可复制的示例而预先致歉,并不是每个人都将拥有网络驱动器来进行试验。
我具有用于执行数据缩减的处理功能,我们的数据存储在网络驱动器上。在今天早上进行调试时,我发现了一些奇怪的事情(对我而言),并且很好奇为什么Windows(Win7,64位)会以这种方式运行。我的Google-fu被击败了。
举例来说,假设我在 \\mynetworkshare
\\mynetworkshare\testdata\a
\\mynetworkshare\testdata\b
\\mynetworkshare\testdata\c
\\mynetworkshare\testdata\c\day1
\\mynetworkshare\testdata\c\day2
Run Code Online (Sandbox Code Playgroud)
随着somedatafile_n.abc在每个的day文件夹中。
c在这种情况下,我的函数将解析用户指定的文件夹,并查找与过滤器匹配的所有数据文件:
searchpath = '\\mynetworkshare\testdata\c'
oldpath = cd(searchpath); % cd to data directory for simpler dir call
[~, filenames] = system('dir /S /B somedatafile_*.abc');
filelist = regexp(filenames, '(.:\\[\w\-\\. ]+\.\w+)', 'match'); % Split filenames
cd(oldpath);
Run Code Online (Sandbox Code Playgroud)
这将返回一个包含文件名的单元格数组:
Z:\day1\somedatafile_1.abc
Z:\day1\somedatafile_2.abc
Z:\day2\somedatafile_1.abc
Run Code Online (Sandbox Code Playgroud)
但是,这些不是与低级别I / O一起使用的有效路径:
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Run Code Online (Sandbox Code Playgroud)
应该注意的是,如果我安装网络驱动器并改用该路径,则此功能可以正常运行:
searchpath = 'H:\testdata\c'
oldpath = cd(searchpath); % cd to data …Run Code Online (Sandbox Code Playgroud) 如果我flipud()在加密期间使用函数,我需要在解密期间使用与其相反的函数.
是否有任何函数或代码片段flipud()在MATLAB 中执行函数的逆运算?
matlab ×5
encryption ×1
histogram ×1
image ×1
matrix ×1
numpy ×1
powershell ×1
python ×1
python-3.x ×1
regex ×1
scipy ×1
statistics ×1