江户川乱折腾
在Python / NumPy中,无需显式复制数组以使其与另一个数组匹配。大小为1的尺寸(单个尺寸)会在它们称为“广播”的过程中自动扩展。例如,给定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)不起作用。最好的解决方案是将keepdims参数用于np.max:X - np.max(X, axis=1, keepdims=True)另一种选择是np.newaxis在索引中使用添加单例尺寸:X - np.max(X, axis=1)[:, np.newaxis]