比较Python中的矩阵并存储结果

比较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.

我想比较一下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.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
的表示,它不是一个矩阵,而是一个一维向量。