2012-03-08 3 views
1

Так что давайте скажем, что у меня есть список чисел, и я хочу создать вектор из них в форме (x, 0, 0). Как мне это сделать?Создание нескольких векторов

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

Так что, когда я получить доступ, скажем, hello[2] я (3, 0, 0) вместо того, чтобы просто 3.

+0

Вы действительно хотите использовать этот синтаксис? – prelic

+0

Я хочу, чтобы иметь возможность умножить hello [2] (который должен быть вектором) другим вектором, например. –

+0

Если вы хотите размножать векторы, вы должны использовать numpy, если можете –

ответ

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

Удивительный, спасибо! –

+0

всего лишь один комментарий: ваш пример на самом деле не использует никакой функции numpy, поэтому просто это можно сделать с помощью чистого Python: hello = [1,2,3,4,5]; hello = [[n, 0,0] для n в приветствии]. Только умножение после этого требует использования numpy. –

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

Отлично! Спасибо! –

1

Это должно работать

hello = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
new_hello = [(n, 0, 0) for n in hello] 
Смежные вопросы