2013-01-02 54 views
1

我有一个numpy数组x,维度=(20,4),其中只有第一行和列是实际字符串值(字母),其余的值是数字,其类型分配为字符串。我想将这些数字值更改为浮点或整数类型。在numpy数组中更改特定值的dtype?

我试过了一些步骤:

a。余由第一行和阵列作为单独的变量的列的副本:

x_row = x[0] 
x_col = x[:,0] 

然后(使用numpy.delete()方法)中删除它们从原始数组x和通过施加用于变了剩余的值的类型循环遍历每个值。但是,当我使用numpy.vstack()numpy.hstack()堆栈复制的行和列时,所有内容都会再次转换为字符串类型。所以,不知道为什么会发生这种情况。

b。除了我使用numpy.insert()方法来插入行和列,但是做同样的事情 - 将所有内容都转换回字符串类型之外,其他操作与a点相同。

那么,有没有办法通过这种删除和堆栈机制(反正无法工作),我可以更改数组的所有值(除第一行和列)到int()float()类型?

回答

4

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

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

+0

你是完全正确的朋友..没有注意到这一点。我认为rec数组或dtype完成我的工作(即将数组的dtype分配为对象(dtype = object))...另外,从来没有尝试过熊猫数组,但是对它们进行了一些了解。谢谢BrenBarn。 :-) – khan