Python 如何在我的数据集中找到每个折叠的实例数?

Python 如何在我的数据集中找到每个折叠的实例数?,python,machine-learning,dataset,histogram,Python,Machine Learning,Dataset,Histogram,我得到了一个包含数据的.npz文件。我已经研究了数据集,并注意到它有5种数据类型: cell_data = np.load("C:/Users/alexs/Documents/DataMining/cell-data.npz") cell_data.files 在输出端给出: ['images', 'counts', 'folds', 'compressed', 'allow_pickle'] 以及图像 我保证数据集本身有3倍。计数是每行的Nx6矩阵 对应于单个图像块,每

我得到了一个包含数据的.npz文件。我已经研究了数据集,并注意到它有5种数据类型:

cell_data = np.load("C:/Users/alexs/Documents/DataMining/cell-data.npz")
cell_data.files
在输出端给出:

['images', 'counts', 'folds', 'compressed', 'allow_pickle']
以及图像

我保证数据集本身有3倍。计数是每行的Nx6矩阵 对应于单个图像块,每列对应于6种细胞类型(称为T1、T2、…、T6)。褶皱似乎是1xN矩阵,但我不确定,它由范围为{0,2}的值组成


我如何找出每个折叠的实例数,如果可能的话,我如何找出折叠的范围,即哪些实例属于哪些折叠(或将实例分组到各自单独的数组中,表示每个折叠,如fold1=x,fold2=x_2等),然后为每个折叠绘制直方图,这样每个单元格类型的计数就可以单独绘制(总共6个图)?

好的,因为您是编程新手,所以我将解释索引是如何工作的(在numpy中,它是python中几乎通用的数学库)

假设我们有一个变量
folds
,其定义如下:

import numpy as np
folds = np.array([1,1,2,2,1,2,1,0,0,0,1,2,1,2,0,0,2,1])
通过执行列表理解,我们可以很容易地计算每个折叠出现的次数:

num_folds = 3
fold_counts = [np.sum(folds==I) for I in range(num_folds)]
#will return [5, 7, 6]
这将返回计数,因为我们将折叠中的每个元素与折叠数0、1和2进行比较(如果元素不等于I,则为true)。我们可以对布尔值求和(将它们设置为1)以得到总数

为了回答您的另一个问题,我们可以使用类似的代码将图像分成折叠:

#assuming images are in a list:
image_folds = [[images[J] for J in np.where(folds==I)[0]] for I in range(num_folds)]

#assuming images are in an array of size [num_images, width, height, channels]
image_folds = [images[folds==I] for I in range(num_folds)]

请不要用不相关的东西(介绍、感谢、道歉等-编辑掉)把你的问题弄得乱七八糟。我猜折叠包含N个条目,与图片的数量相匹配?如果是这样的话,为什么不把它们映射在一起呢?@jhso是的,有2351个图像,所以这只是如何将这些图像划分为3层的问题?老实说,我不知道我会怎么做,我对编程很陌生,所以会返回所有折叠中的实例数?如果是这样,我如何修改它以返回每个折叠中的实例数,即计数0、1和2的数量?这将完成此操作,编辑以使其更清晰哦!好吧,我现在明白你的意思了,谢谢。您知道我可以用什么方法将这些折叠实例分组到它们自己的数组中吗?例如,我将如何将属于折叠1的所有实例分组到各自的单独数组中?我假设这与图像数组本身有关,并确定哪些图像对应于折叠数组中的哪个元素?在代码的最后一部分,您可以只替换一个索引,即,
image\u fold\u 1=images[folds==1]
,或者按原样运行代码并调用:
image\u fold\u 1=image\u folds[1]
。因此,如果我有一个计数数组,这是每个图像的1x6数组,其中6个条目代表6种不同的细胞核类型,我将如何为每个折叠分别绘制每个细胞类型的计数直方图,如果可能的话,我将如何计算出特定箱子中有多少图像具有计数?如果我在纠缠,请提前道歉,这有点让人困惑