我希望有一个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
数组?
答案 0 :(得分:1)
您创建一个np.full
的完整(np.nan
)矩阵,其中包含浮点数dtype
。这意味着您从定义为保存浮点数而不是整数的矩阵开始。
要解决此问题,请定义一个以整数0
作为初始值的完整矩阵。这样,您数组的dtype
是np.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()
)。
一旦有了被遮罩的数组,就可以随时遮罩或取消遮罩特定的元素或元素的行或列。