繁体   English   中英

如何在没有 NumPy 的情况下将矩阵的行转换为 Python 中的列?

[英]How do I convert the rows of a matrix to columns in Python without NumPy?

我正在 Python 中研究数独求解器,我需要在其中创建函数。 其中之一检查数独矩阵并返回其中包含重复数字的行数。

def findRepeatsInColumn(matrix):
    numRepeats = 0
    for row in matrix:
        safeChars=['[', ']', '/']
        usedChars=[]
        for char in str(row):
            if char in usedChars and char not in safeChars:
                numRepeats += 1
                break
            else:
                usedChars.append(char)
    return numRepeats

如果我将矩阵[[1, 1, 1], [2, 2, 2], [3, 3, 3]]传递给它,它可以正常工作并给我 output 3,但用于检查所有列是否重复数字,我需要将行转换为列,这意味着我需要类似: Input: [[1, 1, 1], [2, 2, 2], [3, 3, 3]] Output: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]如果没有 NumPy,我有什么想法吗?

一种简单的方法是使用zip*

>>> ip = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]

>>> print(list(zip(*ip)))
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]

假设您有一个名为m的矩阵

transposed = zip(*m)

如果您的输入是numpy.array您可以使用转置:

i = np.array([[1,1,1], [2,2,2], [3,3,3]])
print(i.T)

output:

[[1 2 3]
 [1 2 3]
 [1 2 3]]

或者你可以使用:

list(map(list, zip(*i)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM