我想在原地向一个空的Numpy数组添加元素。 我事先知道最大数组大小。 我找不到一种直接的方法来实现这一点,所以这是我的解决方法:
N = 1000
a = np.empty([N], dtype=np.int32)
j = 0
for i in range(N):
if f(i):
a[j] = g(i)
j += 1
a.resize(j)
有没有更优雅的方法来编写这段代码,而不需要在 j
中跟踪当前长度,与下面的 C++ 版本类似简单?
const int N = 1000;
vector<int> a;
a.reserve(N);
for (int i=0; i<N; i++)
if (f(i))
a.push_back(g(i));
a.shrink_to_fit();
是的,我看过 如何在Numpy中就地扩展数组?,但它并没有涵盖这种特定情况,即事先已知数组大小限制。
a = np.array([g(i) for i in range(N) if f(i)])
。 - Ch3steRresize
方法是唯一可以原地改变numpy数组大小的操作。 - hpaulj