Matlab与Python对应函数总结
小标题对应Matlab中常用的函数
1.find()函数
- Matlab 中含义:查找非零元素的索引和值
k = find(X) 返回一个包含数组 X 中每个非零元素的线性索引的向量。
如果 X 为向量,则 find 返回方向与 X 相同的向量;如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量 - Python中对应函数where():
import numpy as np
b = np.array([[0, 1, 2], [3, 4, 5]])
x, y = np.where(b > 3) # 返回 b 中所有大于 3 的元素的位置索引
print(x, y) # 输出 [1 1 1] [1 2 3]
print(b[x, y]) # 输出 [4 5 3]
2.sub2ind()函数
- Matlab中含义:将多维数组的索引转换为一维数组的索引
- Python中的函数:
np.ravel_multi_index((row,col), dims=sz, order='F')
multi_index=(row,col):一个元组,其中每个元素都是一个整数数组,它们表示要转换的多维数组中的索引;
dims:一个整数元组,用于指定要转换的多维数组的形状;
order:一个字符串,用于指定在返回的一维索引数组中要按行(‘C’)还是按列(‘F’)的顺序填充元素。
例中,索引为(5,2),表示为10行10列(dims=[10,10])数据中的第6行第3列,按列填充就是第26个,一维索引就是25
import numpy as np
c = np.ravel_multi_index((5,2), dims=[10,10], order='F')
print(c) # 25
3.size()函数
- Matlab 中含义:计算数组大小,如sz = size(A) 返回一个行向量,其元素是 A 的相应维度的长度,如果 A 是一个 3×4 矩阵,则 size(A) 返回向量 [3 4]。
- Python对应函数为shape():而python的size函数用于求得变量中所有的元素个数
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
print(a.shape) # 输出 (3, 2)
a = np.random.random((10,10))
print(a.size) # 100
4.repmat()函数
- Matlab中含义: 指定方向重复数组
- Python中对应函数:tile(A,reps),A是要重复的数组,reps=(a,b),表示将A行重复2次,列重复3次
import numpy as np
c = [_ for _ in range(4)]
b = np.tile(c,(2,3))
print(b)
[[0 1 2 3 0 1 2 3 0 1 2 3]
[0 1 2 3 0 1 2 3 0 1 2 3]]