我有一个numpy数组x,dimension =(20,4),其中只有第一行和第一列是实际字符串值(字母表),其余值是数字,其类型分配为字符串。我想将这些数值更改为float或integer类型。
我尝试了一些步骤:
一个。我将数组的第一行和第一列的副本作为单独的变量:
x_row = x[0]
x_col = x[:,0]
然后从原始数组x
中删除它们(使用numpy.delete()方法)并通过应用遍历每个值的for循环来转换剩余值的类型。但是,当我使用numpy.vstack()
和numpy.hstack()
堆叠复制的行和列时,所有内容都会再次转换为字符串类型。所以,不确定为什么会这样。
湾与a点相同的过程,除了我使用numpy.insert()
方法插入行和列,但是做同样的事情 - 将所有内容转换回字符串类型。
那么,是否有一种方法可以让我不必经历这种删除和堆叠机制(无论如何都无法正常工作)并且我可以将数组的所有值(第一行和第一列除外)更改为int()
或float()
类型?
答案 0 :(得分:4)
numpy数组中的所有项都必须具有相同的dtype。这是一个关于numpy的基本事实。你可以使用numpy recarray,或者你可以使用dtype=object
基本上让所有值都是任何值。
我建议你看看pandas,它提供了一个表格数据结构,允许不同的列具有不同的类型。听起来你所拥有的是一个带有行标签和列标签的表,这就是pandas很好地处理的问题。