微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeError:只能使用NUMPY将长度为1的数组转换为Python标量

如何解决TypeError:只能使用NUMPY将长度为1的数组转换为Python标量

使用numpy.sqrt而不是math.sqrtnumpy.sqrt期望标量或数组作为输入,另一方面math.sqrt只能处理标量。

>>> import numpy as np
>>> import math
>>> a = np.arange(5)
>>> np.sqrt(a)
array([ 0.        ,  1.        ,  1.41421356,  1.73205081,  2.        ])
#error
>>> math.sqrt(a)
Traceback (most recent call last):
  File "<ipython-input-78-c7d50051514f>", line 1, in <module>
    math.sqrt(a)
TypeError: only length-1 arrays can be converted to Python scalars

>>>

解决方法

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt 
import numpy as np 
import math


#task 2e

x = np.linspace(-0.0001,0.1,50)

#constants
e0=8.85*10 ** (-12)

r0=3 * 10 ** (-3)
Q=2 * 10** (-9)

Q2=10 * 10*(-9)
r2=5*10**(-3)


v=(Q/((4*math.pi*e0)*(math.sqrt((x**2+r0**2)))))


v2=v+(Q2/((4*math.pi*e0)*(math.sqrt(((x-2)**2+r2**2)))))

plt.plot(x,v)
plt.plot(x,v2)
plt.xlabel("Meter")
plt.ylabel("V1/2(x)")

运行此代码将产生以下TypeError:

TypeError:只能将长度为1的数组转换为21 v =(Q /(((4 * math.pi * e0) (math.sqrt((x * 2 +
r0 ** 2)))))的Python标量

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。