假设我使用numpy定义了一个2x2矩阵:
array([[1, 2],
[2, 3]])
现在是另一个2x1矩阵:
array([[3],
[4]])
如何逐列连接这两个矩阵,以便它变为:
array([[1, 2, 3],
[2, 3, 4]])
我怎样才能删除指定列,以便它成为
array([[1],
[2]])
答案 0 :(得分:6)
有numpy.concatenate
method
import numpy as np
np.concatenate( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] , axis = 1)
或仅使用hstack
或vstack
np.hstack( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] )
这些也可用于删除列(连接两个子数组) - 这可用于删除许多列。
要删除第i列,您可以将子数组添加到此列,然后从下一列中获取,并将它们连接起来。例如,要删除第二列(索引1
):
a - np.array( [ [1,2,3], [2,3,4] ] )
a1= a[:,:1]
a2= a[:,2:]
np.hstack([a1,a2])
所以一般
def remove_column( a, i ):
return np.hstack( [a[:,:i], a[:,(i+1):] ] )
然后
>>> remove_column(a, 1)
array([[1, 3],
[2, 4]])
>>> remove_column(a, 0)
array([[2, 3],
[3, 4]])
实际上,正如评论中指出的那样 - numpy实现了自己的delete
方法
np.delete(a, 1, 1)
删除了第二列
并删除多个可以使用
执行np.delete(a, [column1, columne2, ..., columnK], 1)
第三个参数是轴说明符,0
表示行,1
列,None
表示整个数组
答案 1 :(得分:2)
您可以使用numpy.hstack
:
>>> import numpy as np
>>> a = np.array([[1,2], [2,3]])
>>> b = np.array([[3], [4]])
>>> np.hstack((a,b))
array([[1, 2, 3],
[2, 3, 4]])
删除更容易,只需切片:
>>> c = a[:,:1]
array([[1],
[2]])
答案 2 :(得分:-1)
In [3]: x = np.array([[1, 2], [2, 3]]
In [4]: y = np.array([[3], [4]])
In [9]: z = np.hstack([x, y])
In [10]: z
Out[10]:
array([[1, 2, 3],
[2, 3, 4]])
In [11]: z[:,:1]
array([[1],
[2]])