我有两个数组,我试图使用连接结合:
a = np.array(([1,2], [5,6], [9,10]))
b = np.array(([3,4], [7,8], [11,12], [13,14], [17,18]))
c = np.concatenate((a,b), 1)
这不会起作用,因为阵列的长度不同。因此我使用len来比较两个数组的长度,然后根据最小长度确定c的长度:
alength = len(a)
blength = len(b)
lengthforc = min(alength, blength)
在此示例中,最小lengthforc
为3.因此,我尝试使用if语句通过删除最后两行(元素)来减少b的长度。
if blength > lengthforc:
rowstoremove = blength - lengthforc
除非有其他方法,否则如何修改此if语句以执行我想要的内容(因为要删除的行数会发生变化)。最后一个数组应该是:
>>> print c
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
答案 0 :(得分:1)
尝试hstack
:
a = np.array(([1,2], [5,6], [9,10]))
b = np.array(([3,4], [7,8], [11,12], [13,14], [17,18]))
end = min(a.shape[0], b.shape[0])
np.hstack((a[:end], b[:end]))
结果:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
修改强>
如果您不需要NumPy数组,可以使用列表:
a_list = [[1,2], [5,6], [9,10]]
b_list = [[3,4], [7,8], [11,12], [13,14], [17,18]]
只需一行:
[x + y for x, y in zip(a_list, b_list)]
结果:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
答案 1 :(得分:0)
我不确定我是否正确解决了问题(在我的解决方案中我只使用了列表), 但就这么简单吗?
a = [[1,2], [5,6], [9,10]]
b = [[3,4], [7,8], [11,12], [13,14], [17,18]]
c = []
for x,y in zip(a,b):
c.append(x+y)