在StackOverflow上找到了一个类似的问题:
https://stackoverflow.com/questions/36609196/attributeerror-float-object-has-no-attribute-sqrt
numpy
doesn't know how to handle
sympy
's
Float
type.
(Pdb) type(Wapproxlist[0])
<class 'sympy.core.numbers.Float'>
Convert it to a numpy array before calling
np.mean
and
np.std
.
Wapproxlist = np.array(Wapproxlist, dtype=np.float64) # can use np.float32 as well
print('mean=%.3f stdv=%.3f' % (np.mean(Wapproxlist), np.std(Wapproxlist)))
print('mean=%.3f stdv=%.3f' % (np.mean(Wlist), np.std(Wlist)))
output:
mean=4.177 stdv=10.283
mean=4.180 stdv=10.300
Note: If you're looking to speed this up, you'll want to avoid
sympy
. Symbolic solvers are pretty cool, but they're also very slow compared to floating point computations.
numpy处理不了sympy中的Float数据类型,
要解决这类问题,要把出错的数据转换为np.float32,或者np.flaot64 就行了。
原文链接:
https://stackoverflow.com/questions/36609196/attributeerror-float-object-has-no-attribute-sqrt
NumPy
(NumericalPython的基础)是高性能科学计算和数据分析的基础包。其部分功能如下:1.ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。2.用于对数组数据进行快速运算的标准数学函数(无序编写循环)。3.用于读写磁盘数据的工具及其用于操作内存映射文件的工具。4.线性代数、随机数生成以及傅里叶变换功能。5.用于集成由C、C++、Fortran等语言编写的代码的工具。创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的
NumPy
数组。列表的转换:嵌套序列(比如由一组等长列表组成的列表)将会被
对于已安装各个模块的如
numpy
、pandas、jupyter notebook等,程序仍
报错
:ModuleNotFoundError: No module named ‘
numpy
’
我当时还怀疑自己没装,去cmd里再次安装。。。提示已经安装:
解决方法:
检查 File-Setting-Project Interpreter中的路径,以下是我的错误路径
点击下三角,换成正确的路径为:****anaconda安装路径下的python.exe即可。
(因为pycharm默认的python是没有选择anaconda自带的python)
点击下方的Apply,等待一会儿,点击OK 即可
在
numpy
使用的过程中出现
Attribute
Error: '
float
'
object
has no
attribute
'
sqrt
' 错误。
在StackOverflow上找到了一个类似的问题,链接。
它那个是求exp问题。
出现这个问题的原因:错误消息似乎暗示
numpy
被解释为浮点数。所以,要解决这问题你只要把出错的数据转换为np.
float
32,或者np.flaot64 就行了...
报错
情况
Attribute
Error: ‘
float
’
object
has no
attribute
‘
sqrt
’
hy = np.
sqrt
(envelope_data ** 2 + hx ** 2)
TypeError: loop of ufunc does not support argument 0 of type
float
which has no callable
sqrt
method
Attribute
Error: ‘
float
’
object
has no
attribute
‘s
求解非线性方程的方法,属于迭代法的一种,原理的话:
x*是这个方程的根,我们在旁边找一个点xk,根据这个点的函数值和导数值,我们可以计算出这条直线和x轴的交点xk+1,然后将xk+1作为下一个xk迭代计算,就能得到答案。
我们将方程整理一下,有:
实际上实现还是很简单的,唯一的难点就是怎么计算函数值和导数值。
计算函数值和导数值
如果是函数值的话,math包中有cos、sin和exp能解决问题,但是还是解决不了求导过程,这时我们就需要使用强大的sympy了。
计算函数值
import sym
关于 ‘
float
’
object
has no
attribute
‘astype’ 的错误
在写python程序的时候,经常遇到**‘
float
’
object
has no
attribute
‘astype’ **,这种情况下,通常是因为输入有问题。
比如,我是做图像处理的,用到如下代码:
import cv2
cap=cv2.VideoCapture(0)
while cap.isOpe...
今天运行下面这个代码
def loadDataSet():
return [[1,3,4],[2,3,5],[1,2,3,5],[2,5],[1],[3],[2,3],[1,3],[1,2,3,4],[2,4]]
报了这个错误:SyntaxError: invalid syntax
File "<ipython-input-14-332fa655c8dd>", l...
于python3默认是unicode编码。
最近读取存储为.csv格式的文件,报属性错误,参考jieba分词时出现
Attribute
Error: '
float
'
object
has no
attribute
'decode'的做法,
在read_csv后面加上.astype(str) ,不再
报错
。
import pandas as pd
import
numpy
as np
impor...
>>> s = pd.Series(["this is good text", "but this is even better"])
>>> [x for x in s.split()]
如果我们直接对Series中的字符串做切分,就是
报错
Attribute
Error: 'Series'
object
has no...
content_S = []
for line in text:
current_segment = jieba.lcut(line)#直接生成一列jieba.lcut 直接生成的就是一个list
if len(current_segment) > 1 and current_segment != '\r\n': #换行符
是误将
float
当作list或者tuple来操作了,对于list或者元组,[]操作是访问下标所在的元素,也就是__getitem__方法。
由于python定义变量的时候并不说明类型,类型都在运行时确定,因此有出现类型错误的可能性。