我有一个maxtrix数据,形状是10201*101,只包含0和1。下面的代码是用matlab/python实现的,但是得到的结果不同,我不知道为什么。。。你知道吗
BOUND = load('C:\Users\1\Desktop\ct06\result_data116.dat');
BOUND = reshape(BOUND,101,101,101);
BOUND(:,:,[1,101]) = 1;
BOUND(:,[1,101],:) = 1;
Boundary = find(BOUND>0); #matlab > Boubdary : 808243x1 double
import numpy as np
BOUND = np.loadtxt(r'C:\Users\1\Desktop\ct06\result_data116.dat').reshape([101,101,101])
BOUND[:,:,[0,100]] = 1
BOUND[:,[0,100],:] = 1
Boundary = np.where(BOUND>0)
print(Boundary[0].size) #python > 809074
我真的不知道为什么它有两个不同的边界(808243和809074)?你知道吗
我猜赋值操作是导致差异的原因(我推迟了赋值部分,然后他们得到了相同的结果)。。。你知道吗
Matlab使用列的主要顺序,而python使用行的主要顺序(阅读https://en.wikipedia.org/wiki/Row-_and_column-major_order了解更多关于这意味着什么的细节)。例如,在python中
结果
在matlab中使用相同的命令
结果
ans=
仅仅因为命令在两种不同的编程语言中具有相同的名称并不意味着它们将执行相同的操作。仅仅因为两个命令声称做相同的事情并不意味着结果不会有细微的差别。在抛出所有数据文件之前,总是用简单的输入测试代码。你知道吗
可能的原因是Matlab使用了列主顺序,所以
这种行为在Matlab和Python中是不同的。你知道吗
相关问题 更多 >
编程相关推荐