Python:如何将整个数组转换为int

时间:2019-03-27 19:45:03

标签: python pandas numpy

我希望有一个int矩阵,该矩阵仅填充第一列,其余元素为Null。抱歉,我的背景是R。因此,我知道如果留下一些Null元素,以后再管理它们会更容易。同时,如果我离开0,那么以后会有很多问题。

我有以下代码:

   import numpy as np
   import numpy.random as random
   import pandas as pa

    def getRowData():
        rowDt = np.full((80,20), np.nan)
        rowDt[:,0] =  random.choice([1,2,3],80) # Set the first column
        return  rowDt

我希望此函数返回int,但似乎它给了我float

我看过this link,并尝试了以下代码:

return  pa.to_numeric(rowDt)

但是,它没有帮助我。此外,rowDT对象没有.astype(<type>)

如何转换int数组?

2 个答案:

答案 0 :(得分:1)

您创建一个np.full的完整(np.nan)矩阵,其中包含浮点数dtype。这意味着您从定义为保存浮点数而不是整数的矩阵开始。

要解决此问题,请定义一个以整数0作为初始值的完整矩阵。这样,您数组的dtypenp.int,并且不需要astype或类型转换。

rowDt = np.full((80,20), 0)

如果您仍然希望将np.nan保留在矩阵中,那么恐怕您不能为此使用numpy数组。您可以持有 all 个整数,或者 all 个浮点数。

答案 1 :(得分:0)

您可以使用numpy.ma.masked_array()创建一个numpy masked array

numpy掩码数组“记住”哪些元素被“掩码”。它提供了类似于numpy数组的方法和功能,但是从计算中排除了掩码值(例如mean())。

一旦有了被遮罩的数组,就可以随时遮罩或取消遮罩特定的元素或元素的行或列。