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

2024-05-19 14:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想比较一下70x1矩阵和1000x3矩阵。我要做的是比较第二个矩阵的第一列和第一个矩阵,找到所有的公共值,然后将结果存储到一个新的第三个矩阵中,这个矩阵将包含所有3列。在

我使用np.intersect1d来查找两个矩阵之间的公共值,但仅此而已。在

我找不到将第二个矩阵的另外两列导入新矩阵的方法。在

矩阵1

[1.0

4.7

4.8

4.9

5.0

5.1]

矩阵2

^{pr2}$

矩阵3

[4.7, 2.4, -3.0]

Tags: 方法np矩阵pr2intersect1d
3条回答

取每个矩阵的第一列值,转换为set,intersect并转换回list(或np.array):

matrix3 = list(set(y for x in matrix1[:,:1] for y in x) & set(y for x in matrix2[:,:1] for y in x))

我看不出有必要拍裸照:

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)

给出:

^{pr2}$

您可以使用np.in1d

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. ]])

相关问题 更多 >