Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在没有NumPy的情况下将矩阵的行转换为列?_Python_List_Numpy - Fatal编程技术网

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

在Python中,如何在没有NumPy的情况下将矩阵的行转换为列?,python,list,numpy,Python,List,Numpy,我正在用Python编写一个数独解算器,我需要在其中创建函数。其中一个检查数独矩阵并返回其中包含重复数字的行数 def findRepeatsInColumn(matrix): numRepeats = 0 for row in matrix: safeChars=['[', ']', '/'] usedChars=[] for char in str(row): if char in usedChars a

我正在用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]]
传递给它,它可以正常工作,并给出输出3,但是为了检查所有列的重复数字,我需要将行转换为列,这意味着我需要类似于:
输入:[[1,1,1],[2,2],[3,3]]
输出:[[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)
输出:

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

或者您可以使用:

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

建议:使用numpy,它的优化建议2:使用
[[1,1,1],[2,2,2],[3,3,3]]
而不是
[[111],[222],[333]
@AngusTay我几乎不相信将你需要为数独解算器实现的操作矢量化是容易的。除非计划使用Numba.@Angus,否则在numpy中转置是很容易的,但像这样的迭代比较慢。与阵列的转换也很慢。