这很可能是重复的;抱歉,我找不到答案。我有一个(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)
?
答案 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
])
它不需要为新矩阵分配内存。