我正在寻找检查np.nanNumPy数组中NaN()出现的最快方法X.np.isnan(X)是不可能的,因为它构建了一个布尔形状的数组X.shape,这可能是巨大的.
我试过了np.nan in X,但这似乎不起作用,因为np.nan != np.nan.有没有一种快速且节省内存的方法来完成这项工作?
(对于那些会问"多么巨大"的人:我说不出来.这是图书馆代码的输入验证.)
假设我有一个带有NaNs 的DataFrame :
>>> import pandas as pd
>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
>>> df
0 1 2
0 1 2 3
1 4 NaN NaN
2 NaN NaN 9
Run Code Online (Sandbox Code Playgroud)
我需要做的是用它上面的同一列中NaN的第一个非NaN值替换每个值.假设第一行永远不会包含a NaN.因此,对于前面的示例,结果将是
0 1 2
0 1 2 3
1 4 2 3
2 4 2 9
Run Code Online (Sandbox Code Playgroud)
我可以逐个循环遍历整个DataFrame,逐个元素并直接设置值,但是有一种简单(最佳无循环)的方法来实现这一目标吗?
这可以分配NaN给一个double或float在C/C++中吗?就像你在JavaScript中一样:a = NaN.所以稍后您可以检查变量是否为数字.
大多数语言都有一个NaN常量,您可以使用它来为变量赋值NaN.python可以不使用numpy吗?
>>> (float('inf')+0j)*1
(inf+nanj)
Run Code Online (Sandbox Code Playgroud)
为什么?这在我的代码中造成了一个讨厌的错误。
为什么1乘法身份不给(inf + 0j)?
我正在使用pandas读取csv文件的两列,readcsv()然后将值分配给字典.列包含数字和字母的字符串.偶尔会出现一个单元格为空的情况.在我看来,读取到该字典条目的值应该是None,而是nan分配.当然,None它更具描述性,因为它具有空值,而nan只是说读取的值不是数字.
我的理解是否正确,None和之间的区别是nan什么?为什么nan分配而不是None?
此外,我的字典检查任何空单元格一直在使用numpy.isnan():
for k, v in my_dict.iteritems():
if np.isnan(v):
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个错误,说我不能使用这个检查v.我想这是因为要使用整数或浮点变量,而不是字符串.如果是这样,我该如何检查v"空单元格"/ nan案例?
我读过关于浮点的内容,我知道NaN可能来自操作.但我无法完全理解这些概念是什么.有什么区别?
在C++编程期间可以生成哪一个?作为程序员,我可以编写一个程序来导致sNaN吗?
我试图在matplotlib中使用imshow将数据绘制为热图,但是一些值是NaN.我希望将NaN渲染为色彩映射中找不到的特殊颜色.
例:
import numpy as np
import matplotlib.pyplot as plt
f = plt.figure()
ax = f.add_subplot(111)
a = np.arange(25).reshape((5,5)).astype(float)
a[3,:] = np.nan
ax.imshow(a, interpolation='nearest')
f.canvas.draw()
Run Code Online (Sandbox Code Playgroud)
结果图像出乎意料地全是蓝色(喷射色图中的最低颜色).但是,如果我这样做的情节:
ax.imshow(a, interpolation='nearest', vmin=0, vmax=24)
Run Code Online (Sandbox Code Playgroud)
- 然后我得到了更好的东西,但是NaN值被绘制成与vmin相同的颜色......是否有一种优雅的方式可以设置NaN用特殊颜色绘制(例如:灰色或透明)?
我想用NaN替换数据帧列中的错误值.
mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']}
df = pd.DataFrame(mydata)
df[df.y == 'N/A']['y'] = np.nan
Run Code Online (Sandbox Code Playgroud)
虽然,最后一行失败并抛出警告,因为它正在处理df的副本.那么,处理这个问题的正确方法是什么?我已经看过许多使用iloc或ix的解决方案但是在这里,我需要使用布尔条件.