【问题标题】:ValueError: object arrays are not supportedValueError:不支持对象数组
【发布时间】:2019-06-05 22:38:10
【问题描述】:

我通过计算 100 个条目中的值“:READ”,从文本文件创建了一个包含 100 列的矩阵。即:vector[0][0] = 文件中前 100 个条目中的 :READ 数量,vector[0][1]= 文件中接下来 100 个条目中的 :READ 数量,依此类推,使用以下代码
`

for i in range(start,len(df1),100):

df2=df1.iloc[start:end,]

count=df2.str.count(":READ").sum()
vector[p].append(count)

filewriter.writerow([start, count])
start=end
end=end+100
if(q<window):
    q=q+1
else: 
    q=0
    p=p+1
    vector.append([])

当我用它来计算特征值时,

e_vals, e_vecs = LA.eig(vector)

它给出了以下错误

ValueError:不支持对象数组

可以做什么?我不擅长python编码。

【问题讨论】:

  • 修复缩进 - 这对 python 代码很重要。-
  • Vector 显然不是一个 numpy 二维数组(否则你不能附加到一个向量行)。您没有显示vector 的实际创建;也许你应该。它应该类似于vector = np.empty((100, 100), dtype=np.float),假设它是一个方阵。
  • 我只使用了 vector = [].. 因为行数是动态的。 (取决于输入文件的大小)
  • eig 尝试从您的列表中创建一个数组。显然结果是一个对象 dtype。这可能是因为vector 的子列表长度不同。尝试np.array(vector) 并检查结果。
  • 我用过 {vector1-NP.array(vector)} 。当我打印 {vector1.shape} 它给了 44 。不是二维数组的形状。

标签: python pandas scipy


【解决方案1】:

尝试检查元素的类型,用一个简单的

print(type(vector[0][0]))

我遇到了同样的错误,就我而言,我的所有元素都是:

<class 'sympy.core.numbers.Float'>

将每个元素转换为浮动后:

for i in range(len(vector)):
     for j in range(len(vector[i]):
          vector[i][j] = float(vector[i][j])

我得到了我想要的结果。

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 2020-11-19
    • 2019-02-16
    • 2020-07-05
    • 2020-09-09
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多