在创建新的numpy数组时,您可以像这样创建它们:
a = numpy.array((2, 5))
b = numpy.array((a[0] + 1, 10))
或者像这样:
a = numpy.array([2, 5])
b = numpy.array([a[0] + 1, 10])
哪种方式更好?
发布于 2019-05-21 03:38:43
元组的速度要快10%左右。
>>> timeit.timeit("numpy.array((2, 5))", setup="import numpy")
0.9039838570024585
>>> timeit.timeit("numpy.array([2, 5])", setup="import numpy")
1.0044978570003877
我在numpy.array((a[0] + 1, 10))
示例中也得到了相同的结果。dis
工具揭示了差异的原因:
>>> dis.dis("numpy.array((2, 5))")
1 0 LOAD_NAME 0 (numpy)
2 LOAD_METHOD 1 (array)
4 LOAD_CONST 0 ((2, 5))
6 CALL_METHOD 1
8 RETURN_VALUE
>>> dis.dis("numpy.array([2, 5])")
1 0 LOAD_NAME 0 (numpy)
2 LOAD_METHOD 1 (array)
4 LOAD_CONST 0 (2)
6 LOAD_CONST 1 (5)
8 BUILD_LIST 2
10 CALL_METHOD 1
12 RETURN_VALUE
似乎元组在创建时被视为单个对象,而列表则需要构建。
https://stackoverflow.com/questions/56227154
复制相似问题