从列表或元组创建新的numpy数组

时间:2019-05-20 19:38:43

标签: python numpy numpy-ndarray

在创建新的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])

哪种方法更好?

1 个答案:

答案 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

似乎在创建元组时将其视为单个对象,而需要构建列表。