Python怎么拿出非数值矩阵前几列与另一个矩阵相同的行 再将这些行的最后一列替换成别的矩阵
时间: 2023-06-03 08:07:52 浏览: 112
03-python-数组属性方法总结-数组与字符串的转换-生成数组的函数-矩阵
5星 · 资源好评率100%
可以使用numpy库中的函数实现。具体步骤为:
1.使用numpy中的loadtxt函数读取非数值矩阵和另一个矩阵,并将它们转化为numpy数组。
2.使用numpy中的isnan函数找到非数值矩阵中的非数值行,使用~符号取反得到数值行。
3.使用numpy中的in1d函数找到另一个矩阵中与数值行相同的行,并返回一个布尔型数组。
4.使用numpy中的where函数找到布尔型数组为True的位置,并获取对应的索引。
5.使用numpy中的take函数取出对应的行,并在最后一列替换成别的矩阵。
下面是示例代码:
import numpy as np
# 读取非数值矩阵和另一个矩阵
matrix1 = np.loadtxt('matrix1.txt')
matrix2 = np.loadtxt('matrix2.txt')
# 找到数值行
valid_rows = ~np.isnan(matrix1).any(axis=1)
# 找到与数值行相同的行
same_rows = np.in1d(matrix2[:, :-1], matrix1[valid_rows, :-1]).reshape(matrix2.shape[0])
# 找到相同行的索引
same_indexes = np.where(same_rows)[0]
# 取出对应行,并替换最后一列
matrix2[same_indexes, -1] = np.array([1, 2, 3])
阅读全文