Numpy array获取不是NaN的数组的子集/切片

2024-04-19 13:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大小数组:(50,50)。在这个数组中有一个大小为(20,10)的切片。 只有此切片包含数据,其余部分全部设置为nan。在

如何从我的大数组中切出这一片?在


Tags: 数据切片数组nan
2条回答

您可以使用花式索引来收集not NaN的项:

a = a[ np.logical_not( np.isnan(a) ) ].reshape(20,10)

或者,正如Joe Kington所建议的那样:

^{pr2}$

你知道南军在哪里吗?如果是这样的话,这样的方法应该有效:

newarray = np.copy(oldarray[xstart:xend,ystart:yend])

其中xstart和{}是x维中所需切片的开始和结束,对于y也是如此。如果不再需要旧数组,可以删除它以释放内存。在

如果您不知道nan在哪里,这应该可以解决问题:

^{pr2}$

请注意,对于大型数组,这将相当慢,因为np.where会查看整个过程。对于一个找到第一个索引等于某个值然后停止的方法,在数字错误跟踪程序中有一个开放的问题。也许有更优雅的方式来做这件事,这只是我脑海中的第一件事。在

编辑:忽略,sgpc的答案要好得多。在

相关问题 更多 >