2012-03-08 80 views
1

因此,让我们说我有一个数字列表,我想创建一个向量中的所有形式(x,0,0)。我将如何做到这一点?创建多个向量

hello = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

所以,当我访问,比方说,hello[2]我得到(3, 0, 0)而不是仅仅3

+0

您是否确实希望能够使用该语法? – prelic 2012-03-08 02:35:47

+0

例如,我希望能够将hello [2](它应该是一个向量)乘以另一个向量。 – 2012-03-08 02:37:27

+0

如果你想繁殖矢量,你应该使用numpy,如果你可以 – 2012-03-08 02:41:16

回答

1

试试这个,使用numpy - “Python基础科学计算的基础包”:

import numpy as np 
hello = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
hello = [np.array([n, 0, 0]) for n in hello] 

以上将产生您期望的结果:

>>> hello[2] 
array([3, 0, 0]) 

>>> hello[2] * 3 
array([9, 0, 0]) 
+0

太棒了,谢谢! – 2012-03-08 03:55:40

+0

只是一个评论:你的例子其实并没有使用任何numpy的功能,所以只需要用纯Python就可以完成:hello = [1,2,3,4,5];你好= [[n,0,0]为你好]。之后只有乘法才需要使用numpy。 – 2012-04-18 23:00:13

1

如果您正在使用矢量工作时,最好使用numpy的,因为它有大量的矢量运算的支持,Python不会

>>> import numpy as np 
>>> hello = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
>>> hello = (hello*np.array([(1,0,0)]*10).transpose()).transpose() 
>>> hello[2] 
array([3, 0, 0]) 
>>> hello[2]*3 
array([9, 0, 0]) 
+0

太棒了!谢谢! – 2012-03-08 03:55:59

1

这应该工作

hello = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
new_hello = [(n, 0, 0) for n in hello]