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'