使用numpy.array创建矩阵时如何去除输出中的array标识
你现在matrix列表中存储的元素是numpy.ndarray类型对象,直接打印列表时会输出每个元素的repr形式,因此带有array标识。你可以通过将numpy数组转为Python原生列表的方式去除标识。
注意:原始代码存在语法错误,函数参数不能直接写常量3,需改为变量名;如果你之前给numpy设置的别名为nd,将后续示例中的np替换为nd即可。
方案1:存储时直接转为原生列表
该方案修改存储结构,列表中直接存Python原生列表,后续使用和打印都不会出现array标识,适合不需要保留numpy数组运算特性的场景。
import numpy as np def matrix_input(N): matrix = [] for i in range(N): a = np.array(input().split(), int) # 调用tolist()方法转为原生列表 matrix.append(a.tolist()) print(matrix) # 传入3表示读取3行输入 matrix_input(3)
输入你提供的测试内容后,输出为:[[1, 1, 1], [1, 1], [1, 1, 1]]
方案2:仅打印时转换
该方案保留列表中numpy数组的存储结构,仅在打印时做转换,适合后续还需要对每行做numpy运算的场景。
import numpy as np def matrix_input(N): matrix = [] for i in range(N): a = np.array(input().split(), int) matrix.append(a) # 打印时遍历转换为原生列表 print([item.tolist() for item in matrix]) matrix_input(3)
输出结果和方案1完全一致。
补充说明:如果你所有输入的行长度都相等,不需要处理不等长矩阵的场景,也可以直接将整个列表转为二维numpy数组后打印,此时print方法会自动调用numpy数组的str形式,不会显示
array标识。
内容的提问来源于stack exchange,提问作者Rishav Mitra
相关产品推荐
相关产品推荐

