更改numpy数组中特定值的dtype?

时间:2013-01-02 22:53:57

标签: python arrays numpy

我有一个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()类型?

1 个答案:

答案 0 :(得分:4)

numpy数组中的所有项都必须具有相同的dtype。这是一个关于numpy的基本事实。你可以使用numpy recarray,或者你可以使用dtype=object基本上让所有值都是任何值。

我建议你看看pandas,它提供了一个表格数据结构,允许不同的列具有不同的类型。听起来你所拥有的是一个带有行标签和列标签的表,这就是pandas很好地处理的问题。