如何在python中将列表转换为列?
我有一个包含5000个数字的列表。 看起来是这样的如何在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
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。相信我,我做了很多;)