2024-04-19 13:07:05 发布
网友
我有一个大小数组:(50,50)。在这个数组中有一个大小为(20,10)的切片。 只有此切片包含数据,其余部分全部设置为nan。在
如何从我的大数组中切出这一片?在
您可以使用花式索引来收集not NaN的项:
not NaN
a = a[ np.logical_not( np.isnan(a) ) ].reshape(20,10)
或者,正如Joe Kington所建议的那样:
你知道南军在哪里吗?如果是这样的话,这样的方法应该有效:
newarray = np.copy(oldarray[xstart:xend,ystart:yend])
其中xstart和{}是x维中所需切片的开始和结束,对于y也是如此。如果不再需要旧数组,可以删除它以释放内存。在
xstart
如果您不知道nan在哪里,这应该可以解决问题:
请注意,对于大型数组,这将相当慢,因为np.where会查看整个过程。对于一个找到第一个索引等于某个值然后停止的方法,在数字错误跟踪程序中有一个开放的问题。也许有更优雅的方式来做这件事,这只是我脑海中的第一件事。在
np.where
编辑:忽略,sgpc的答案要好得多。在
您可以使用花式索引来收集
not NaN
的项:或者,正如Joe Kington所建议的那样:
^{pr2}$你知道南军在哪里吗?如果是这样的话,这样的方法应该有效:
其中}是x维中所需切片的开始和结束,对于y也是如此。如果不再需要旧数组,可以删除它以释放内存。在
xstart
和{如果您不知道nan在哪里,这应该可以解决问题:
^{pr2}$请注意,对于大型数组,这将相当慢,因为
np.where
会查看整个过程。对于一个找到第一个索引等于某个值然后停止的方法,在数字错误跟踪程序中有一个开放的问题。也许有更优雅的方式来做这件事,这只是我脑海中的第一件事。在编辑:忽略,sgpc的答案要好得多。在
相关问题 更多 >
编程相关推荐