我有两个文本文件,每个文件的像素强度来自一个图像。通过手动设置阈值将第一个文件转换为二进制图像:
import numpy as np
import matplotlib.pyplot as p
icp4 = np.loadtxt(icp4_img)
with np.nditer(icp4, op_flags=['readwrite']) as it:
for x in it:
if x[...] > 800:
x[...] = 1
else:
x[...] = 0
p.imshow(icp4, interpolation='nearest', cmap='gray')
p.show()
print(icp4.shape)
>>>(45, 52)对于第二个文件,我希望将像素值排序为两个列表,我将使用它们来绘制像素值的直方图,也就是说,如果像素在第一个数组中高于阈值,那么我希望将其排序到内部列表。
#sorting pixels for PTM channel
ptm = np.loadtxt(ptm_img)
inside = [] #list for pixel values that colocalize with icp4 signal
outside = [] #list for pixel values that do not colocalize with icp4 signal
with np.nditer(ptm, op_flags=['readonly']) as it:
i=0
for x in it:
if icp4[i] > 0:
inside.append(x[...])
else:
outside.append(x[...])
i+=1
sys.exit()当迭代数组ptm时,我不知道如何引用数组icp4中的相同位置。如果这是重复的问题,我很抱歉。
发布于 2022-04-28 21:41:53
import numpy as np
import matplotlib.pyplot as p
icp4 = np.loadtxt(icp4_img)
ptm = np.loadtxt(ptm_img)
inside, outside = [], []
with np.nditer(icp4, op_flags=['readwrite']) as icp_it, np.nditer(ptm, op_flags=['readonly']) as ptm_it:
for icp, ptm in zip(icp_it, ptm_it):
if icp[...] > 800:
icp[...] = 1
else:
icp[...] = 0
if np.all(icp > 0):
inside.append(ptm)
else:
outside.append(ptm)
p.imshow(icp4, interpolation='nearest', cmap='gray')
p.show()
print(icp4.shape)
sys.exit()https://stackoverflow.com/questions/72050407
复制相似问题