python-3.x - python行用一个元素划分
问题描述
我正在阅读“计算物理学 - 马克纽曼”一书。以下是它的一个例子。
from numpy import *
A = array([
[2, 1, 4, 1],
[3, 4, -1, -1],
[1, -4, 1, 5],
[2, -2, 1, 3]
])
v = array([-4, 3, 9, 7], float)
N = len(v)
for m in range(N):
div = A[m,m]
A[m,:] /= div <-----------(not working)
v[m] /= div
...
它是反向替换实现的一部分。但是在划分 div(矩阵中行的对角元素)时,它会显示错误。
"A[m,:] /= 格
TypeError:没有找到与指定签名匹配的循环,并且为 ufunc true_divide 找到了强制转换“
是什么造成了这个错误?我该如何解决?
解决方案
这应该解决它:
import numpy as np
A = np.array([
[2, 1, 4, 1],
[3, 4, -1, -1],
[1, -4, 1, 5],
[2, -2, 1, 3]
], dtype=np.float)
v = np.array([-4, 3, 9, 7], float)
N = len(v)
for m in range(N):
div = A[m, m]
A[m, :] /= div
v[m] /= div
或者如果你真的想要整数除法:
for m in range(N):
div = A[m, m]
A[m, :] = A[m, :] / div
v[m] /= div
问题在于,在 Python 3 中,/
会进行真正的除法,因此它将结果转换为浮点数,并且当您A[m, :] /= div
尝试将浮点结果分配给A
整数类型时。您可以在此处找到有关此的更多信息
作为旁注,通常最好不要使用:
from numpy import *
推荐阅读
- redis - Jedis Benchmarking - Jedis 有多快
- javascript - 如何在 JavaScript 中使用 Base64String 值设置 Dynamics CRM/365 字段
- javascript - 为什么我无法写入我的 firebase 数据库?
- java - 运行我的第一个 java 应用程序时出现 InvalidModuleDescriptorException
- linux - 了解系统中可用连续内存量的方法
- javascript - 量角器:元素当前不可交互,可能无法操作
- django - 无法发布到 azure
- python - 捕获运行无限循环的进程的标准输出和标准错误
- python - 使用python从命令行输出中获取数据
- c# - 当 MQTTnet 服务器未运行时,PublishAsync 不会失败