Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在a1D NumPy数组的开始和结束处查找顺序NAN的索引?_Python_Numpy - Fatal编程技术网

Python 如何在a1D NumPy数组的开始和结束处查找顺序NAN的索引?

Python 如何在a1D NumPy数组的开始和结束处查找顺序NAN的索引?,python,numpy,Python,Numpy,我有一个1D NumPy数组,它既包含浮点数又包含NAN。在阵列的开始和结束处几乎总是有多个连续的NAN,在阵列的中间有一些NAN。无法提前预测阵列中存在的NAN的位置或数量 我想做的是: 仅检索在数组的开始和结束处出现的顺序NAN的索引 不检索数组中间的NANS < /LI>的索引 避免使用循环/列表理解(如果可能) 下面是一个简短的示例,说明了我正在使用的数组类型(实际数组将包含1e3到1e9元素) 对于此数组,我希望检索以下索引: idx = [0, 1, 2, 12, 13, 14,

我有一个1D NumPy数组,它既包含浮点数又包含NAN。在阵列的开始和结束处几乎总是有多个连续的NAN,在阵列的中间有一些NAN。无法提前预测阵列中存在的NAN的位置或数量

我想做的是:

  • 仅检索在数组的开始结束处出现的顺序NAN的索引
  • 不检索数组中间的NANS < /LI>的索引
  • 避免使用循环/列表理解(如果可能)
下面是一个简短的示例,说明了我正在使用的数组类型(实际数组将包含1e3到1e9元素)

对于此数组,我希望检索以下索引:

idx = [0, 1, 2, 12, 13, 14, 15]

从所有NAN的掩码开始,使用:

现在请注意,始终返回最小值的第一个实例:

leading_nans = mask.argmin()
可以使用简单的切片反转阵列,而无需复制任何数据:

trailing_nans = mask[::-1].argmin()
其中任何一个都可以为零。无论哪种方式,现在都可以连接两个范围以获得实际索引:

nan_indices = np.concatenate((np.arange(leading_nans), np.arange(data.size - trailing_nans, data.size))
如果您想要一个面具:

nan_mask = np.zeros(data.size, dtype=bool)
nan_mask[:leading_nans] = True
nan_mask[-trailing_nans:] = True

中间是什么组成的?它是一个指定的范围还是仅仅一个中间值?中间值可以是数组中从第一个非Nan元素到最后一个非Nan元素的任意值。太棒了,这非常有效。Thx@WesH. 很高兴是这样。这完全没有经过测试:)
nan_indices = np.concatenate((np.arange(leading_nans), np.arange(data.size - trailing_nans, data.size))
nan_mask = np.zeros(data.size, dtype=bool)
nan_mask[:leading_nans] = True
nan_mask[-trailing_nans:] = True