首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nditer对数组中的值进行排序

问使用nditer对数组中的值进行排序
EN

Stack Overflow用户
提问于 2022-04-28 21:27:02
回答 1查看 25关注 0票数 0

我有两个文本文件,每个文件的像素强度来自一个图像。通过手动设置阈值将第一个文件转换为二进制图像:

代码语言:javascript
复制
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)

对于第二个文件,我希望将像素值排序为两个列表,我将使用它们来绘制像素值的直方图,也就是说,如果像素在第一个数组中高于阈值,那么我希望将其排序到内部列表。

代码语言:javascript
复制
#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中的相同位置。如果这是重复的问题,我很抱歉。

EN

回答 1

Stack Overflow用户

发布于 2022-04-28 21:41:53

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72050407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档