【问题标题】:Creating multiple vectors创建多个向量
【发布时间】:2012-03-08 02:33:37
【问题描述】:

假设我有一个数字列表,我想从所有数字中创建一个向量,格式为 (x, 0, 0)。我该怎么做?

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

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

【问题讨论】:

  • 您真的希望能够使用该语法吗?
  • 例如,我希望能够将 hello[2](应该是一个向量)乘以另一个向量。
  • 如果你想将向量相乘,你应该使用 numpy,如果可以的话

标签: python vpython


【解决方案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])

【讨论】:

  • 只有一条评论:您的示例实际上没有使用任何 numpy 功能,因此也可以使用纯 Python 完成:hello = [1,2,3,4,5]; hello = [[n,0,0] for n in hello]。只有后面的乘法需要使用numpy。
【解决方案2】:

如果您使用向量,最好使用 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])

【讨论】:

    【解决方案3】:

    这应该可以工作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2021-11-25
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 2017-09-09
      • 2013-03-22
      相关资源
      最近更新 更多