【问题标题】:AttributeError:'list' object has no attribute 'size'AttributeError:'list' 对象没有属性 'size'
【发布时间】:2023-04-09 21:29:01
【问题描述】:

在这里,我只是提取一个 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) 返回其长度。我无法想象它怎么会返回一个列表......

标签: python arrays pandas tensorflow


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 2017-07-22
    • 2014-09-08
    • 2016-01-30
    • 2020-12-15
    • 2016-04-15
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多