比较Python中的矩阵并存储结果
我想比较一下70x1矩阵和1000x3矩阵。我要做的是比较第二个矩阵的第一列和第一个矩阵,找到所有的公共值,然后将结果存储在一个新的第三个矩阵中,该矩阵将包含所有3列 我使用比较Python中的矩阵并存储结果,python,numpy,matrix,Python,Numpy,Matrix,我想比较一下70x1矩阵和1000x3矩阵。我要做的是比较第二个矩阵的第一列和第一个矩阵,找到所有的公共值,然后将结果存储在一个新的第三个矩阵中,该矩阵将包含所有3列 我使用np.intersect1d查找两个矩阵之间的公共值,但仅此而已 我找不到将第二个矩阵的其他两列导入新矩阵的方法 Matrix1 [1.0 4.7 4.8 4.9 5.0 5.1] Matrix2 [[3.0, 1.8, -3.0] [3.1, 2.2, -3.0] [4.7, 2.4, -3.0] [3.
np.intersect1d
查找两个矩阵之间的公共值,但仅此而已
我找不到将第二个矩阵的其他两列导入新矩阵的方法
Matrix1
[1.0
4.7
4.8
4.9
5.0
5.1]
Matrix2
[[3.0, 1.8, -3.0]
[3.1, 2.2, -3.0]
[4.7, 2.4, -3.0]
[3.3, 2.8, -3.0]
[3.40, 3.0, -3.0]]
Matrix3
[4.7, 2.4, -3.0]
取每个矩阵的第一列值,转换为集合,相交并转换回列表(或
np.array
):
matrix3=list(set(y表示矩阵x1[:,:1]表示矩阵x中的y)和set(y表示矩阵x2中的x[:,:1]表示矩阵x中的y))
我不认为有必要使用numpy:
m1 = [1.0, 4.7, 4.8, 4.9, 5.0, 5.1]
m2 = [[3.0, 1.8, -3.0],
[3.1, 2.2, -3.0],
[4.7, 2.4, -3.0],
[3.3, 2.8, -3.0],
[3.40, 3.0, -3.0]]
output = []
for value in m2:
if value[0] in m1:
output.append(value)
print(output)
给出:
[[4.7, 2.4, -3.0]]
您可以使用
np.inad
:
a = numpy.array([1.0,4.7,4.8,4.9,5.0,5.1])
b = numpy.array([
[3.0, 1.8, -3.0],
[3.1, 2.2, -3.0],
[4.7, 2.4, -3.0],
[3.3, 2.8, -3.0],
[3.40, 3.0, -3.0]
])
c = b[numpy.in1d(b[:, 0], a), :]
# array([[ 4.7, 2.4, -3. ]])
听起来很接近-你能发布1吗。有效的python数组和2。所需的输出?我得到一个错误“数组的索引太多”。很抱歉,我对你是个新手coding@Giomix88因为根据您发布的
matrix1
的表示,它不是一个矩阵,而是一个一维向量。