Python MATLAB阵列到Numpy阵列的转换
我正在尝试将我的MATLAB代码转换为Python 在MATLAB中,我有Python MATLAB阵列到Numpy阵列的转换,python,arrays,matlab,numpy,Python,Arrays,Matlab,Numpy,我正在尝试将我的MATLAB代码转换为Python 在MATLAB中,我有OP这是一个300x300双数组和mask这是300x300逻辑数组 t1=mask(:)等于90000x1逻辑数组 t2=OP(掩码(:)的输出如何可能等于57664x1双精度数组 下面是我的MATLAB代码: OP=repmat(Ph,size(image,1),1).*repmat(Pv,1,size(image,2)); t1 = mask(:) t2 = OP(mask(:)) data=sort(OP(mask
OP
这是一个300x300双
数组和mask
这是300x300逻辑
数组
t1=mask(:)
等于90000x1逻辑
数组
t2=OP(掩码(:)
的输出如何可能等于57664x1双精度
数组
下面是我的MATLAB代码:
OP=repmat(Ph,size(image,1),1).*repmat(Pv,1,size(image,2));
t1 = mask(:)
t2 = OP(mask(:))
data=sort(OP(mask(:)),'descend');
另外,在Python中,我使用Numpy实现我的MATLAB代码,但是OP[mask]
是MATLAB转换的OP(mask(:)
是一个90000x1x300 ndarray
。我不知道怎么修理它
下面是我的python代码:
OP = np.matlib.repmat(Ph, image.shape[0], 1) * np.matlib.repmat(Pv, 1, image.shape[1])
t2 = OP[mask]
data = -np.sort(-OP[mask], axis=0)
我知道t1
、OP
和mask
与MATLAB中的类似变量大小相同
如果有人能帮助我,我将不胜感激 在八度音程中:
>> OP = reshape(1:16,4,4);
>> OP
OP =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
>> mask = logical([1,0,0,1;0,1,1,1;0,0,0,0;1,0,1,0])
mask =
1 0 0 1
0 1 1 1
0 0 0 0
1 0 1 0
>> OP(mask)
ans =
1
4
6
10
12
13
14
拉威尔没有什么不同:
>> OP(mask(:))
ans =
1
4
6
10
12
13
14
在ipython/numpy
会话中:
In [368]: OP = np.arange(1,17).reshape(4,4)
In [369]: OP
Out[369]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
In [370]: mask = np.array([[1,0,0,1],[0,1,1,1],[0,0,0,0],[1,0,1,0]]).astype(bool)
In [371]: mask
Out[371]:
array([[ True, False, False, True],
[False, True, True, True],
[False, False, False, False],
[ True, False, True, False]])
In [372]: OP[mask]
Out[372]: array([ 1, 4, 6, 7, 8, 13, 15])
在八度音程中:
>> OP = reshape(1:16,4,4);
>> OP
OP =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
>> mask = logical([1,0,0,1;0,1,1,1;0,0,0,0;1,0,1,0])
mask =
1 0 0 1
0 1 1 1
0 0 0 0
1 0 1 0
>> OP(mask)
ans =
1
4
6
10
12
13
14
拉威尔没有什么不同:
>> OP(mask(:))
ans =
1
4
6
10
12
13
14
在ipython/numpy
会话中:
In [368]: OP = np.arange(1,17).reshape(4,4)
In [369]: OP
Out[369]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
In [370]: mask = np.array([[1,0,0,1],[0,1,1,1],[0,0,0,0],[1,0,1,0]]).astype(bool)
In [371]: mask
Out[371]:
array([[ True, False, False, True],
[False, True, True, True],
[False, False, False, False],
[ True, False, True, False]])
In [372]: OP[mask]
Out[372]: array([ 1, 4, 6, 7, 8, 13, 15])
你能把你的问题换成一句话吗?你能把你的问题换成一句话吗?