在python中混淆数组

时间:2011-06-20 16:16:19

标签: python

这是在Python中声明和遍历数组的正确方法,其中每个元素乘以常量值吗?

timeArray = array([0]*1000)

for x in timeArray:
    timeArray[x] = x * deltaTime
    print(timeArray)

3 个答案:

答案 0 :(得分:4)

timeArray = [i*deltaTime for i in range(1000)]

将构建一个包含所需内容的列表。索引到列表需要O(1)时间,与数组相同。 Python列表非常快,它们实际上是implemented as arrays

您确定要在构建数组/列表时print timeArray = numpy.arange(1000) timeArray *= deltaTime 内容吗?

(旁白:如果你想要更快的数组,因为你正在进行数字运算,那么Numpy数组可能是更好的选择:

{{1}}

答案 1 :(得分:0)

这可能不那么令人困惑,并且做你想要的。

timeArray = [0 for i in range(1000)]

for x in timeArray:
    timeArray[x] *= deltaTime
    print(timeArray)

答案 2 :(得分:0)

看起来你真正需要的是numpy数组。内置数组的行为更像列表。

#!/usr/bin/python

from array import array

timeArray = array("f", [1]*1000)

deltaTime = 2

for i, x in enumerate(timeArray):
    timeArray[i] = timeArray[i] * deltaTime

print(timeArray)

# but numpy arrays behave more "naturally".

from numpy import array
timeArray = array([1]*1000, dtype="f")
print (timeArray * 2)

numpy数组会将数组的所有元素乘以标量值。 此外,我不确定你的原始数组代码是否真的有效。而且,numpy数组要快得多。