1

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

我尝试了一些步骤:

一种。我将数组的第一行和第一列复制为单独的变量:

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

然后从原始数组中删除它们x(使用 numpy.delete() 方法)并通过应用迭代每个值的 for 循环来转换剩余值的类型。numpy.vstack()但是,当我使用and堆叠复制的行和列时numpy.hstack(),所有内容都会再次转换为字符串类型。所以,不知道为什么会这样。

湾。与 a 点相同的过程,除了我使用numpy.insert()插入行和列的方法,但做同样的事情 - 将所有内容转换回字符串类型。

那么,有没有一种方法可以让我不必通过这种删除和堆叠机制(无论如何都不起作用)并且我可以将数组的所有值(第一行和第一列除外)更改为int()float()键入?

4

1 回答 1

4

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

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

于 2013-01-02T22:58:27.750 回答