在创建新的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])
哪种方法更好?
答案 0 :(得分:2)
成语速度快约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
似乎在创建元组时将其视为单个对象,而需要构建列表。