AttributeError:'list' 对象没有属性 'size'

Posted

技术标签:

【中文标题】AttributeError:\'list\' 对象没有属性 \'size\'【英文标题】:AttributeError:'list' object has no attribute 'size'AttributeError:'list' 对象没有属性 'size' 【发布时间】:2017-12-19 06:47:44 【问题描述】:

在这里,我只是提取一个 csv 文件并读取“TV”值,计算平均值并使用 tensorflow 打印。但我收到“AttributError”列表没有属性“大小”。有人可以帮我吗?提前谢谢。

 import tensorflow as tf
 import pandas
 csv = pandas.read_csv("Advertising.csv")["TV"]
 t = tf.constant(list(csv))
 r = tf.reduce_mean(t)
 sess = tf.Session()
 s = list(csv).size
 fill = tf.fill([s],r)
 f = sess.run(fill)
 print(f)

【问题讨论】:

试试这个:s = len(csv) 而不是 s = list(csv).size 不,列表没有属性size。获取大小对象长度的常规方法是改用len(object) @Martijn Pieters。在这种情况下,它会给出结果 [147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 147.04249573 @Raghavi:那么请务必包含样本数据和预期结果。如果你有一个 pandas Series 对象,那么直接使用 .size attribute 即可。 Pandas 和 numpy 将大多数操作转换为对内容的操作,这就是为什么它们是正常 len() 用法的例外。 @Raghavi, pandas.read_csv("Advertising.csv")["TV"] 返回 Pandas.Series 对象,len(Pandas.Series) 返回其长度。我无法想象它怎么会返回一个列表...... 【参考方案1】:

作为 cmets 中讨论的总结,以下是在 csv 中获取列长度的有效方法:

$ csv = pandas.read_csv("Advertising.csv")
$ print type(csv), len(csv)
<class 'pandas.core.frame.DataFrame'> 10

$ series = csv["TV"]
$ print type(series), len(series)
<class 'pandas.core.series.Series'> 10

$ as_list = list(series)
$ print type(as_list), len(as_list)
<type 'list'> 10

这里是计算平均值的方法(没有 tensorflow 会话):

$ import numpy as np
$ print np.mean(series)
1.2

【讨论】:

以上是关于AttributeError:'list' 对象没有属性 'size'的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“list”对象没有属性“startswith”

面对 AttributeError:'list' 对象没有属性 'lower'

如何解决 AttributeError:'list' 对象在 python 中没有属性'keys' [关闭]

ansible AttributeError: 'list' 对象没有属性 'startswith'

Sklearn 错误:“AttributeError:‘MissingValues’对象没有属性‘to_list’”

AttributeError: 'list' 对象在使用 cx_freeze 时没有属性 'rfind'