gpt4 book ai didi

python - Python 中的 Repmat 与 MATLAB 中的 Repmat

转载 作者:行者123 更新时间:2023-12-01 09:19:05 24 4
gpt4 key购买 nike

对于给定的矩阵,我从行中减去每行的最大值。在 MATLAB 中,我会做类似的事情

Xm = X - repmat(max(X,[],2), 1, size(X,2));

对于Python,我一直在尝试各种变体

Xm = X - np.matlib.repmat(np.max(X,axis = 1), 1, len(X[0])) 但无济于事!

我究竟错过了什么?多谢。

最佳答案

在 Python/NumPy 中,不需要显式复制数组以使其与另一个数组匹配。尺寸 1(单一尺寸)的尺寸为 automatically expanded in a process they call "broadcasting" .

例如,给定

X = np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])

你可以写

X - np.max(X, axis=0)

np.max返回的数组的形状为(5,),它与X的形状兼容((3, 5))。 NumPy 从最后一个维度开始对齐形状,如果一个数组的维度少于另一个数组,则在前面填充单个维度。

但是,这个过程有时需要一点帮助。由于 np.max 返回的数组的维度比输入的维度少,因此广播通常不能。匹配这些数组。例如,X - np.max(X, axis=1) 不起作用。

最好的解决方案是使用 np.maxkeepdims 参数:

X - np.max(X, axis=1, keepdims=True)

另一个选项是在索引中使用 np.newaxis 添加单一维度:

X - np.max(X, axis=1)[:, np.newaxis]

关于python - Python 中的 Repmat 与 MATLAB 中的 Repmat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50956747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com