将列表转换为数组时,为什么尺寸会发生变化?彩色图片上的SVD

问题描述

我正在尝试在彩色图片上运行svd函数彩色图片的尺寸为NxDx3,因此内存伪造,我决定只对每个彩色通道运行SVD方法,然后将3维矩阵放回去。

    print(np.shape(X))
        if X.ndim < 3: # For 2 dimensional matricies
            u,s,v = np.linalg.svd(X,full_matrices=True) #Do the SVD function
        else: # for 3+ dimensional matricies,make an empty list to append each color channel in  
            u = []
            s = []
            v = []
            for i in range(3): 
                channel = X[i]#each channel
                cu,cs,cv = np.linalg.svd(X[:,:,i],full_matrices=True)
                u.append(cu)
                s.append(cs)
                v.append(cv)
            print(len(s))    
            u = np.array(u)
            v = np.array(v)
            s = np.array(s)
            print(s.ndim)
        print("I worked")
        return u,v

在遍历我的代码时,我意识到s数组总是一维太小,但是列表长度是正确的大小。为什么会这样?

例如,此打印

(1146,1908,3)
3
2

为什么我的尺寸不合适?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)