如何将元组附加到 numpy 数组而不按元素执行?

2024-05-13

如果我尝试

x = np.append(x, (2,3))

元组(2,3)不会附加到数组的末尾,而是2 and 3单独附加,即使我最初声明x as

x = np.array([], dtype = tuple)

or

x = np.array([], dtype = (int,2))

执行此操作的正确方法是什么?


我同意@user2357112的评论:

附加到 NumPy 数组比附加到普通列表要慢得多。他们根本不是为这种操作而设计的

这是一个小基准:

# measure execution time
import timeit
import numpy as np


def f1(num_iterations):
    x = np.dtype((np.int32, (2, 1)))

    for i in range(num_iterations):
        x = np.append(x, (i, i))


def f2(num_iterations):
    x = np.array([(0, 0)])

    for i in range(num_iterations):
        x = np.vstack((x, (i, i)))


def f3(num_iterations):
    x = []
    for i in range(num_iterations):
        x.append((i, i))

    x = np.array(x)

N = 50000

print timeit.timeit('f1(N)', setup='from __main__ import f1, N', number=1)
print timeit.timeit('f2(N)', setup='from __main__ import f2, N', number=1)
print timeit.timeit('f3(N)', setup='from __main__ import f3, N', number=1)

我既不会使用 np.append 也不会使用 vstack,我只是正确创建我的 python 数组,然后用它来构造 np.array

EDIT

这是我的笔记本电脑上的基准输出:

  • 附加:12.4983000173
  • 虚拟堆栈:1.60663705793
  • 列表:0.0252208517006

【14.3秒完成】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将元组附加到 numpy 数组而不按元素执行? 的相关文章

随机推荐