我想添加(N x 1)个np.array作为新列到另一个np.array(N x M)
我尝试了很多事情(追加,转置,hstack等),但是由于某种原因,我无法使其正常工作。
例如:
a=[[1,2,3],[4,5,6], [7,8,9], [10,11,12]]
b=[100,200,300,400]
c=[100,200,300,400]
d=[100,200,300,400]
我希望结果是这样的:
1,2,3,100,100,100
4,5,6,200,200,200
7,8,9,300,300,300
10,11,12,400,400,400
答案 0 :(得分:3)
您可以使用function readguarded(ws)
data = Vector{UInt8}()
success = true
try
data = read(ws)
catch err
@debug err
data = Vector{UInt8}()
success = false
finally
return data, success
end
end
按列组合数据:
np.c_
a = [[1,2,3],[4,5,6], [7,8,9], [10,11,12]]
b = [100,200,300,400]
c = [100,200,300,400]
d = [100,200,300,400]
np.c_[a, b, c, d]
您也可以使用``column_stack''获得相同的结果:
array([[ 1, 2, 3, 100, 100, 100],
[ 4, 5, 6, 200, 200, 200],
[ 7, 8, 9, 300, 300, 300],
[ 10, 11, 12, 400, 400, 400]])
np.column_stack([a, b, c, d])
感谢josemz提供了更简洁的版本。
答案 1 :(得分:0)
只需将它们串联在最后一个轴上即可
In [329]: a=np.array([[1,2,3],[4,5,6], [7,8,9], [10,11,12]])
...: b=np.array([[100,200,300,400]]).T # transpose a (1,4)
...: c=np.array([100,200,300,400])[:,None] # add a dimension
...: d=np.array([[100],[200],[300],[400]]) # list of lists
In [330]: np.concatenate([a,b,c,d], axis=-1)
Out[330]:
array([[ 1, 2, 3, 100, 100, 100],
[ 4, 5, 6, 200, 200, 200],
[ 7, 8, 9, 300, 300, 300],
[ 10, 11, 12, 400, 400, 400]])
检查形状:
In [331]: [i.shape for i in [a,b,c,d]]
Out[331]: [(4, 3), (4, 1), (4, 1), (4, 1)]
但是您显示的b
np.array([100,200,300,400])
是(4,)形的,而不是(4,1)。因此,它需要进行数组重塑,例如column_stack
提供的数组。