在numpy数组中添加具有特定值的列的最快方法?

时间:2019-11-10 23:14:00

标签: python numpy

这很可能是重复的;抱歉,我找不到答案。我有一个(3000,3)数组,我想制作一个(3000,4)数组,最后一列是一个特定值。我可以做一个非常简单的np.insert(x, 1, val, axis=1)来将值插入第1列之前,但是我无法使用np.insert()将其添加到最后一列中。我可以做np.repeat(val, np.shape(x)[0])或使用np.hstack(),但是它们需要先创建一个与原始数组长度相同的数组(长度不同),并且有点笨拙(也许这是唯一的方法),我我猜如果我只关心我要附加的一个值,那是一种更好的方法。

还有什么比这更好的了吗? np.concatenate((x, np.repeat(val, np.shape(x)[0])[:, np.newaxis]), axis=1)

2 个答案:

答案 0 :(得分:2)

您可以分配一个更大的数组,从x复制旧值,并在标广播的最后帮助下用标量填充最后一列

y=np.empty_like(x, shape=(3000,4))
y[:,:-1]=x
y[:,-1]=your_value

答案 1 :(得分:0)

我建议使用np.c_和np.ones_like消除冗长,但是解决方案与您的建议类似

btarray = bytearray([
    0xa9, 0x01,
    0x6d, 0x01
])

它不需要为新矩阵分配内存。