草庐IT

python - np.isnan 在 dtype "object"的数组上

我正在处理不同数据类型的numpy数组。我想知道任何特定数组的哪些元素是NaN。通常,这就是np.isnan的用途。但是,np.isnan对数据类型object(或任何字符串数据类型)的数组不友好:>>>str_arr=np.array(["A","B","C"])>>>np.isnan(str_arr)Traceback(mostrecentcalllast):File"",line1,inTypeError:Notimplementedforthistype>>>obj_arr=np.array([1,2,"A"],dtype=object)>>>np.isnan(obj_arr)

python - 如何检查数字是否为 np.float64 或 np.float32 或 np.float16?

除了使用一组or语句之外isinstance(x,np.float64)或isinstance(x,np.float32)或isinstance(np.float16)是否有更简洁的方法来检查变量是否为float类型? 最佳答案 你可以使用np.floating:In[11]:isinstance(np.float16(1),np.floating)Out[11]:TrueIn[12]:isinstance(np.float32(1),np.floating)Out[12]:TrueIn[13]:isinstance(np.floa

Python Numpy : np. int32 "slower"比 np.float64

我想了解python的一个奇怪行为。让我们考虑一个矩阵M,其形状为6000x2000。该矩阵填充有符号整数。我想计算np.transpose(M)*M。两种选择:当我“自然地”执行此操作时(即没有指定任何类型),numpy选择类型np.int32并且该操作大约需要150秒。当我强制类型为np.float64(使用dtype=...)时,相同的操作大约需要2秒。我们如何解释这种行为?我天真地认为int乘法比float乘法便宜。非常感谢您的帮助。 最佳答案 不,整数乘法并不便宜。但稍后会详细介绍。很可能(我有99%的把握)numpy调用

python - np.nan 和 isnull() 对比的区别

我以为是data[data.agefm.isnull()]和data[data.agefm==numpy.nan]是等价的。但是不,第一个真正返回agefm为NaN的行,但第二个返回一个空的DataFrame。我感谢省略的值总是等于np.nan,但这似乎是错误的。agefm列有float64类型:(Pdb)data.agefm.describe()count2079.000000mean20.686388std5.002383min10.00000025%17.00000050%20.00000075%23.000000max46.000000Name:agefm,dtype:floa

python - 为什么numpy.core.numeric._typelessdata中有两个np.int64(为什么numpy.int64不是numpy.int64?)

这不像好奇心那么严重。在我的64位linux解释器中我可以执行In[10]:np.int64==np.int64Out[10]:TrueIn[11]:np.int64isnp.int64Out[11]:True太好了,正是我所期望的。但是我发现了numpy.core.numeric模块的这个奇怪的属性In[19]:fromnumpy.core.numericimport_typelessdataIn[20]:_typelessdataOut[20]:[numpy.int64,numpy.float64,numpy.complex128,numpy.int64]奇怪为什么numpy.in

python - pd.Timestamp 与 np.datetime64 : are they interchangeable for selected uses?

这个问题的动机是ananswer到questiononimprovingperformance在pandas中与DatetimeIndex进行比较时。该解决方案通过df.index.values将DatetimeIndex转换为numpy数组,并将该数组与np.datetime64对象。这似乎是从此比较中检索bool数组的最有效方法。pandas的一位开发人员对这个问题的反馈是:“这些通常不一样。提供numpy解决方案通常是一种特殊情况,不推荐使用。”我的问题是:对于一部分操作,它们是否可以互换?我很感激DatetimeIndex提供了更多功能,但我只需要基本功能,例如切片和索引。对于

python - 是否可以 np.concatenate 内存映射文件?

我用np.save()保存了几个numpy数组,放在一起它们非常大。是否可以将它们全部加载为内存映射文件,然后连接并切分所有文件,而无需将任何内容加载到内存中? 最佳答案 显然使用numpy.concatenate将数组加载到内存中。为避免这种情况,您可以轻松地在新文件中创建第三个memmap数组,并从您希望连接的数组中读取值。以更有效的方式,您还可以将新数组附加到磁盘上的现有文件。在任何情况下,您都必须为数组选择正确的顺序(行优先或列优先)。以下示例说明如何沿轴0和轴1连接。1)沿axis=0连接a=np.memmap('a.ar

python - 对 pandas DataFrame 中的空值使用 None 而不是 np.nan

我有一个包含混合数据类型的pandasDataFrame。我想用None替换所有空值(而不是默认的np.nan)。出于某种原因,这似乎几乎是不可能的。实际上我的DataFrame是从csv中读入的,但这里有一个简单的DataFrame混合数据类型来说明我的问题。df=pd.DataFrame(index=[0],columns=range(5))df.iloc[0]=[1,'two',np.nan,3,4]我做不到:>>>df.fillna(None)ValueError:mustspecifyafillmethodorvalue也不是:>>>df[df.isnull()]=NoneT

python - 找到第一个 np.nan 值位置的最有效方法是什么?

考虑数组aa=np.array([3,3,np.nan,3,3,np.nan])我能做到np.isnan(a).argmax()但这需要找到所有np.nan才能找到第一个。有没有更有效的方法?我一直在尝试弄清楚我是否可以将参数传递给np.argpartition,这样np.nan就会排在最前面而不是最后。关于[dup]的编辑。这个问题之所以不同,有几个原因。该问题和答案涉及值(value)观的平等。这是关于isnan的。这些答案都遇到了我的答案所面临的同样问题。请注意,我提供了一个完全有效的答案,但强调了它的效率低下。我希望解决效率低下的问题。关于第二个[dup]的编辑。仍在解决平等问

python - 使用 Numpy (np.linalg.svd) 进行奇异值分解

我正在阅读Abdi&Williams(2010)“主成分分析”,我正在尝试重做SVD以获得进一步PCA的值。文章指出以下SVD:X=PDQ^t我将数据加载到np.arrayX中。X=np.array(data)P,D,Q=np.linalg.svd(X,full_matrices=False)D=np.diag(D)但是我在检查时没有得到上面的相等性X_a=np.dot(np.dot(P,D),Q.T)X_a和X是相同的维度,但是值不一样。我是否遗漏了什么,或者np.linalg.svd函数的功能是否与论文中的方程不兼容? 最佳答案