用Numpy数组简明地堆叠常量?

2024-03-29 05:21:12 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种简洁的方法来堆叠任意长度的常数ndarray?你知道吗

到目前为止,我能找到的最好的是:

b = np.arange(4)

# Pad b with 5:
np.vstack((5 * np.ones_like(b), b))

# Another way:
np.pad(b[np.newaxis, :], ((1,0), (0,0)), 'constant', constant_values=5)

第一个还不算太糟,但似乎应该有办法利用广播。从R来的时候,我的第一反应是这样做:

np.vstack( (5, b) ) # similar to R's rbind(5, b)

不幸的是这不起作用。你知道吗


Tags: 方法withnpanotherones常数waylike
1条回答
网友
1楼 · 发布于 2024-03-29 05:21:12

更简洁、更快速的阴影:

np.vstack(([5]*len(b),b))

性能比较:

%%timeit
np.vstack(([5]*len(b),b))

100000 loops, best of 3: 15.8 µs per loop

%%timeit
np.vstack((5 * np.ones_like(b), b))

10000 loops, best of 3: 21 µs per loop

%%timeit
np.pad(b[np.newaxis, :], ((1,0), (0,0)), 'constant', constant_values=5)

10000 loops, best of 3: 39.6 µs per loop

相关问题 更多 >