Sympy的row_del()方法为何返回None?与GeeksforGeeks示例不符
Sympy Matrix.row_del() 返回None的原因及解决方法
原因
row_del()是Sympy中原地修改矩阵的方法,它的设计逻辑是直接修改调用它的矩阵对象本身,不会返回修改后的新矩阵,执行后默认返回None。你看到的GeeksforGeeks示例可能基于旧版Sympy(行为已变更),或者示例本身存在错误。
正确用法
方式1:原地修改后直接使用原对象
先创建矩阵实例,调用row_del()后直接操作原对象即可,因为它已经被修改:
from sympy import Matrix A = Matrix([(1, 2, 3), (4, 5, 6)]) A.row_del(0) # 原地删除第0行,无返回值 display(A) # 输出删除后的矩阵:Matrix([[4, 5, 6]])
方式2:保留原矩阵,生成新矩阵
如果不想改动原矩阵,可以通过切片生成新矩阵,或者先复制原矩阵再修改副本:
from sympy import Matrix A = Matrix([(1, 2, 3), (4, 5, 6)]) # 方法一:切片生成新矩阵 B = A[1:, :] display(B) # 方法二:复制后修改副本 C = A.copy() C.row_del(0) display(C)
注意事项
Sympy中后缀带_del、_set的方法大多是原地操作,不会返回新对象,不要尝试将它们的返回值赋值给变量,否则会得到None。
内容的提问来源于stack exchange,提问作者Hendrix13
相关产品推荐
相关产品推荐

