如何用二维索引生成二维数组?解决图像数据降维无法绘图问题
解决二维图像数据筛选后保持形状的问题
你原代码里的循环切片逻辑有误,np.where(data1 > 0)返回的是包含行索引数组和列索引数组的元组,直接通过循环切片会把二维数组压缩成一维,导致形状改变。要保留二维形状,有两种常用方法:
方法一:替换非正数值为填充值(推荐)
如果只是想保留原图像的二维结构,把非正的数值替换成0(或者NaN、自定义背景值),这样数组形状始终是(512,512),可以直接用于绘图:
import numpy as np data1 = D1.data data1 = data1[0,0,...] # 形状(512,512) # 把所有<=0的数值替换成0(也可以换成你需要的其他值,比如np.nan) data1_positive = np.where(data1 > 0, data1, 0) print(data1_positive.shape) # 输出(512,512)
方法二:创建新数组填充正数值
如果需要严格保留原正数值的位置,其余位置设为特定值,可以创建一个和原数组同形状的空数组,再通过索引填充:
import numpy as np data1 = D1.data data1 = data1[0,0,...] # 形状(512,512) data1_inx = np.where(data1 > 0) # 创建和原数组同形状的零数组 data1_positive = np.zeros_like(data1) # 用索引把原数组中的正数值填充到新数组对应位置 data1_positive[data1_inx] = data1[data1_inx] print(data1_positive.shape) # 输出(512,512)
这两种方法都能保持数组的二维结构,直接用于图像绘制。
内容的提问来源于stack exchange,提问作者vintz
相关产品推荐
相关产品推荐

