Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/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中将列表转换为列?_Python - Fatal编程技术网

如何在python中将列表转换为列?

如何在python中将列表转换为列?,python,Python,我有一个包含5000个数字的列表。 看起来是这样的 y = [1,2,3,4,5,6] 我想把这个矩阵乘以另一个矩阵。 因此,我想将其转换为列 y' =[[1],[2],[3],[4],[5],[6]] 我尝试使用zip(*y)。但是出现了一个错误“zip参数#1必须支持迭代” 非常感谢你的帮助 y' = [[i] for i in y] 你会这么做吗 要做到这一点,您可以使用列表理解: >>> y = [1,2,3,4,5,6] >>> [[i] fo

我有一个包含5000个数字的列表。 看起来是这样的

y = [1,2,3,4,5,6]
我想把这个矩阵乘以另一个矩阵。 因此,我想将其转换为列

y' =[[1],[2],[3],[4],[5],[6]]
我尝试使用
zip(*y)
。但是出现了一个错误
“zip参数#1必须支持迭代”
非常感谢你的帮助

y' = [[i] for i in y]
你会这么做吗


要做到这一点,您可以使用列表理解:

>>> y = [1,2,3,4,5,6]
>>> [[i] for i in y]
[[1], [2], [3], [4], [5], [6]]

您可以使用列表理解:

>>> y = [1,2,3,4,5,6]
>>> [[i] for i in y]
[[1], [2], [3], [4], [5], [6]]

考虑切换到
numpy
进行有效的向量和矩阵运算

In [1]: import numpy as np

In [2]: %paste
y = [1,2,3,4,5,6]

## -- End pasted text --

In [3]: a = np.array(y)

In [4]: a
Out[4]: array([1, 2, 3, 4, 5, 6])

In [5]: np.dot(a, a)
Out[5]: 91
使用矩阵:

In [7]: M = np.matrix(np.arange(0, 15, 0.5).reshape((6, 5)))

In [8]: M
Out[8]:
matrix([[  0. ,   0.5,   1. ,   1.5,   2. ],
        [  2.5,   3. ,   3.5,   4. ,   4.5],
        [  5. ,   5.5,   6. ,   6.5,   7. ],
        [  7.5,   8. ,   8.5,   9. ,   9.5],
        [ 10. ,  10.5,  11. ,  11.5,  12. ],
        [ 12.5,  13. ,  13.5,  14. ,  14.5]])

In [9]: a * M
Out[9]: matrix([[ 175. ,  185.5,  196. ,  206.5,  217. ]])
或者简单地说:

In [10]: M = np.arange(0, 15, 0.5).reshape((6, 5))

In [11]: np.dot(a, M)
Out[11]: array([ 175. ,  185.5,  196. ,  206.5,  217. ])

考虑切换到
numpy
进行有效的向量和矩阵运算

In [1]: import numpy as np

In [2]: %paste
y = [1,2,3,4,5,6]

## -- End pasted text --

In [3]: a = np.array(y)

In [4]: a
Out[4]: array([1, 2, 3, 4, 5, 6])

In [5]: np.dot(a, a)
Out[5]: 91
使用矩阵:

In [7]: M = np.matrix(np.arange(0, 15, 0.5).reshape((6, 5)))

In [8]: M
Out[8]:
matrix([[  0. ,   0.5,   1. ,   1.5,   2. ],
        [  2.5,   3. ,   3.5,   4. ,   4.5],
        [  5. ,   5.5,   6. ,   6.5,   7. ],
        [  7.5,   8. ,   8.5,   9. ,   9.5],
        [ 10. ,  10.5,  11. ,  11.5,  12. ],
        [ 12.5,  13. ,  13.5,  14. ,  14.5]])

In [9]: a * M
Out[9]: matrix([[ 175. ,  185.5,  196. ,  206.5,  217. ]])
或者简单地说:

In [10]: M = np.arange(0, 15, 0.5).reshape((6, 5))

In [11]: np.dot(a, M)
Out[11]: array([ 175. ,  185.5,  196. ,  206.5,  217. ])

我认为您尝试的是2D阵列:

 >>> z = [[1,2,3,4,5,6]]
 >>> zip(*z)
 [(1,), (2,), (3,), (4,), (5,), (6,)]
不过,现在您有了一个元组列表,而不是列表列表

据我所知,zip的存在是为了获取iterables集(易怒(?)并返回元组列表,其中第n个元组包含每个iterable中的第n项

当您获取一个1D列表并对其应用“*”时,您在将其传递给zip之前先将其解压缩。所以

  y = [1,2,3,4,5,6]
  zip(*y)

  y = [1,2,3,4,5,6]
  zip(1,2,3,4,5,6)

正如错误所述,它要求zip处理不支持迭代的参数。

我认为您尝试的是处理2D数组:

 >>> z = [[1,2,3,4,5,6]]
 >>> zip(*z)
 [(1,), (2,), (3,), (4,), (5,), (6,)]
不过,现在您有了一个元组列表,而不是列表列表

据我所知,zip的存在是为了获取iterables集(易怒(?)并返回元组列表,其中第n个元组包含每个iterable中的第n项

当您获取一个1D列表并对其应用“*”时,您在将其传递给zip之前先将其解压缩。所以

  y = [1,2,3,4,5,6]
  zip(*y)

  y = [1,2,3,4,5,6]
  zip(1,2,3,4,5,6)

正如错误所述,它要求zip处理不支持迭代的参数。

如果你在做数学,忘记列表,使用numpy。相信我,我做了很多;)如果你在做数学,忘掉列表,用numpy。相信我,我做了很多;)