不幸的是,由于您使用的是字符串,因此您不会从这里的“矢量化”中获得太多改进。由于这个限制,纯 Python 的理解与你所能得到的一样好。 “向量化”操作只有在数据为数字时才能利用优化的数字 C 代码。
这里有一个例子,你可以在这里做你想做的事情:
In [4]: %timeit np.char.add(np.repeat("vectorize_variable_", 100), np.arange(100).astype(str))
108 µs ± 1.79 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
相对于纯 Python 理解:
In [5]: %timeit [f"vectorize_variable_{i}" for i in range(100)]
11.1 µs ± 175 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
据我所知,在处理字符串时,使用 numpy 确实不会为您带来任何性能优势。当然,我可能弄错了,如果我是的话,我会喜欢的。
如果您仍然不相信,这里是与n=10000 相同的测试:
In [6]: %timeit [f"vectorize_variable_{i}" for i in range(n)]
1.21 ms ± 23.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [7]: %timeit np.char.add(np.repeat("vectorize_variable_", n), np.arange(n).astype(str)
...: )
9.97 ms ± 40.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
纯 Python 比“矢量化”版本快大约 10 倍。