假设我们有一个未知形状的矩阵(numpy数组),形状可以是(1,5)
(行)、(5,1)
(列)、(5,5)
(正方形)、(5,6)
(非正方形)或{
我想要一个任意形状的矩阵(列,行,正方形,非正方形,退化)。我将返回一个翻转的上/下左/右版本。在
因为np.flip
与1d数组有一些问题。我的方法是:
def flipit(M):
return M.ravel()[::-1].reshape(M.shape)
这是可行的,但可以接受吗?有什么更快的方法吗?在
另一方面,如何对稀疏矩阵做同样的处理(例如,M
是scipy.sparse.csr_matrix
)。在
我们可以使用步长为
-1
的切片表示法来表示输入中的dim数量,从而沿着所有轴翻转,这就是原始代码的本质。这将包括数组和稀疏矩阵-在新的NumPy版本(15.1以后的版本)上进行了简化
在新的NumPy版本上:^{} and newer ,它允许我们为需要翻转的轴指定整数元组。对于默认情况下,} ,它将沿所有轴翻转。因此,要解决我们的情况,它将简单地
axis=None
来自^{np.flip(a)
,这将再次覆盖泛型ndarray和稀疏矩阵。在相关问题 更多 >
编程相关推荐