python--获取每张切片的不同PEF区间值的百分比

news2024/12/1 0:29:33

在全直径数字岩心中,如何获取每张切片的不同PEF区间值的百分比?

import os
import datetime
from PIL import Image
import numpy as np
import csv
import easygui as g


class Table(object):

    def __init__(self, table_data_path):
        self.table_data_path = table_data_path

    def get_data(self):
        self.image = Image.open(self.table_data_path)
        self.array = np.array(self.image).flatten()
        self.table_data = [i for i in self.array if i > 0]
        if self.array.any() != 0:
            # Mode_value = round(stats.mode(self.table_data)[0][0], 2)
            # Mode_count = stats.mode(self.table_data)[1][0]
            # Count = np.size(self.table_data)
            Min = round(np.min(self.table_data), 5)
            min_list.append(Min)
            Max = round(np.max(self.table_data), 5)
            max_list.append(Max)
            Mean = round(np.mean(self.table_data), 5)
            mean_list.append(Mean)
            StdDev = round(np.std(self.table_data), 5)
            stdDev_list.append(StdDev)

            for a in range(len(data_range_use)):
                range_percent = round(len([j for j in self.table_data if
                                           (j > data_range_use[a][0]) and (j <= data_range_use[a][1])]) / len(
                    self.table_data) * 100, 4)
                prepare_list['range_percent_list_%s' % a].append(range_percent)
        else:
            min_list.append(0)
            max_list.append(0)
            mean_list.append(0)
            stdDev_list.append(0)
            for m in range(len(data_range_use)):
                prepare_list['range_percent_list_%s' % m].append(0)


if __name__ == '__main__':

    start = datetime.datetime.now()
    print(start)

    list_name = []
    min_list, mean_list, max_list, stdDev_list = [], [], [], []

    data_range = [[i / 10, (i + 2) / 10] for i in range(60)]
    data_range_use = [data_range[i] for i in range(len(data_range)) if (i % 2 == 0)]
    data_range_end = [[6, 100]]
    data_range_use.extend(data_range_end)

    prepare_list = {}  # 定义空字典


    def test_list_pre():
        prepare_list = locals()  # 返回prepare_list中当前位置每个字典里的全部局部变量(也就是键)


    for l in range(len(data_range_use)):
        prepare_list['range_percent_list_' + str(l)] = []

    slice_name = []
    rootpath = g.diropenbox()
    print(rootpath)


    for i in os.listdir(rootpath):
        print(os.path.join(rootpath, i))
        slice_name.append(i)
        t = Table(os.path.join(rootpath, i))
        t.get_data()

    data0 = {'slice_name': slice_name,
             'Min': min_list,
             'Max': max_list,
             'Mean': mean_list,
             'StdDev': stdDev_list,
             }

    data1 = {}

    for b in range(len(data_range_use)):
        k = '%s-%s' % (data_range_use[b][0], data_range_use[b][1])
        v = prepare_list['range_percent_list_%s' % b]
        data1.update({k: v})

    data = {}
    data.update(data0)
    data.update(data1)

    # print(data)

    csv_file = open('%s—2.csv' % rootpath.split("\\")[-1], 'w', newline='')
    writer = csv.writer(csv_file)

    table_head = ['slice_name', 'Min', 'Max', 'Mean', 'StdDev']
    table_head1 = [('%s-%s' % (data_range_use[i][0], data_range_use[i][1])) for i in range(len(data_range_use))]
    table_head.extend(table_head1)
    # print(table_head)

    writer.writerow(table_head)
    for ii in range(len(data['Min'])):
        writer.writerow([data[m][ii] for m in table_head])

    csv_file.close()
    print('the data has been saved!')
    stop = datetime.datetime.now()
    print(stop)
    time = (stop - start).seconds
    print("Total time (min):%s" % round((time / 60), 2))

处理结果如下表:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1255745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三菱GX WORRKS3 下载与安装

目录 下载 安装 准备好安装包 对电脑系统要求 安装 因为小编公司需要&#xff0c;所以开始了三菱plc软件的学习&#xff0c;并从今天开始记录学习&#xff0c;希望小编的内容能帮到你&#xff0c;对你的学习有帮助&#xff01; 下载 三菱电机官网 当然了&#xff0c;需要…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家&#xff08;最低适合1个人经营的卖家&#xff09;首选以下两种物流&#xff0c;目前已知的是以下两种&#xff0c;后续有新的发现再更新。 1、云途物流&#xff08;YunExpress&#xff09;&#xff…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。在各种领域也经常被使用&#xff0c;…

一、Lua基础

文章目录 一、Lua是什么二、Lua特性&#xff08;一&#xff09;轻量级&#xff08;二&#xff09;可扩展&#xff08;三&#xff09;其它特性 三、Lua安装四、Lua应用 看到评论说&#xff0c;C让我见识了语言的严谨与缜密&#xff0c;lua让我见识到了语言的精巧与创新&#xff…

基于51单片机交通灯夜间模式+紧急模式_易懂版_(仿真+代码_报告_讲解)

J029 51单片机交通灯_易懂版__夜间紧急(仿真代码_报告_讲解&#xff09; 51单片机交通灯_易懂版_ 1 **讲解视频&#xff1a;**2 **功能要求**3 **仿真图&#xff1a;**4 **程序设计&#xff1a;**5 **设计报告**6 **资料清单&&下载链接&#xff1a;****资料下载链接&am…

佳易王商超便利店进销存管理系统软件下载,扫描商品自动计算金额支持扫码支付

佳易王商超便利店进销存管理系统软件下载&#xff0c;扫描商品自动计算金额支持扫码支付 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。软件在关闭的时候&#xff0c;可以设置会员数据…

Windows安装mysql8.0

官网地址&#xff1a;MySQL :: MySQL Community Downloads 选择相应版本信息下载 默认选择点击下一步 默认配置点击next 设置密码 默认配置

多模态大模型总结1(2021和2022年)

常用损失函数 ITC &#xff08;image-text contrasctive loss&#xff09; CLIP中采用的对比损失&#xff0c;最大化配对文本对的余弦相似度&#xff0c;最小化非配对文本对的余弦相似度&#xff0c;采用交叉熵损失实现 MLM &#xff08;masked language modeling&#xff0…

【Linux】23、内存超详细介绍

文章目录 零、资料一、内存映射1.1 TLB1.2 多级页表1.3 大页 二、虚拟内存空间分布2.1 用户空间的段2.2 内存分配和回收2.2.1 小对象2.2.2 释放 三、查看内存使用情况3.1 Buffer 和 Cache3.1.1 proc 文件系统3.1.2 案例3.1.2.1 场景 1&#xff1a;磁盘和文件写案例3.1.2.2 场景…

【STM32单片机】自动售货机控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用OLED显示模块、矩阵按键模块、LED和蜂鸣器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示系统初始界面&#xff0c;可通过…

C#的函数

可以发现首字母一般为动词 可以看出void是返回空值 这个就不是放回空值了 例如 函数修饰符 1、如上面的实例一样——无修饰符&#xff1a;如果一个参数没有用参数修饰符标记&#xff0c;则认为它将按值进行传递&#xff0c;这将以为着被调用的方法收到原始数据的一份副本。&am…

2024北京交通大学计算机考研分析

24计算机考研|上岸指南 北京交通大学 北京交通大学是教育部是首批进入国家“211工程”建设高校&#xff0c;是全国具有研究生院的56所高校之一&#xff0c;计算机与信息技术学院为北京交通大学下属二级学院&#xff0c;学院成立于2000年3月&#xff0c;其前身是成立于1977年的…

面向对象编程:Rust的面向对象特性

欢迎关注我的公众号lincyang新自媒体&#xff0c;回复关键字【程序员经典书单】&#xff0c;领取程序员的100本经典书单 大家好&#xff01;我是lincyang。 今天我们将深入探讨Rust语言中的面向对象编程&#xff08;OOP&#xff09;特性&#xff0c;并将其与其他流行编程语言进…

C# PIE-SDK二次开发界面汉化方法

那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程&#xff0c;他们只是觉得这是一件有趣的事情&#xff01; C# PIE-SDK二次开发界面汉化方法 &#x1f340;前言&#x1f338;配置方法&#x1f355;拷贝语言包文件夹&#x1f354;增加窗体代码&#x1f35f;运行…

链表?细啊!超详细的知识点总结!

链表 定义&#xff1a;链表是一种递归的数据结构&#xff0c;它或者为空&#xff08;null)&#xff0c;或者是指向一个结点&#xff08;node&#xff09;的引用&#xff0c;该结点含有一个泛型的元素和一个指向另一条链表的引用。 ​ 其实链表就是有序的列表&#xff0c;它在内…

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-GPT训练的Pretraining&#xff0c;SFT&#xff0c;Reward Modeling&#xff0c;RLHF 文章目录 GPT实战系列-GPT训练的Pretraining&#xff0c;SFT&#xff0c;Reward Modeling&#xff0c;RLHFPretraining 预训练阶段Supervised FineTuning &#xff08;SFT&#x…

文档向量化工具(二):text2vec介绍

目录 前言 text2vec开源项目 核心能力 文本向量表示模型 本地试用 安装依赖 下载模型到本地&#xff08;如果你的网络能直接从huggingface上拉取文件&#xff0c;可跳过&#xff09; ​运行试验代码 前言 在上一篇文章中介绍了&#xff0c;如何从不同格式的文件里提取…

4.整数输入,并输出变量类型【2023.11.26】

1.问题描述 使用 input 函数读入一个整数&#xff0c;并将该整数输出&#xff0c;并在下一行输出变量类型 2.解决思路 使用 type 函数获取变量类型 输入的内容从 input() 函数获取时&#xff0c;它们是字符串类型。但是&#xff0c;我们需要将其转换为整数类型&#xff0c;以…

乘法原理 LeetCode 828. 统计子串中的唯一字符

我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s "LEETCODE" &#xff0c;则其中 "L", "T","C","O","D" 都是唯一字符&#xff0c;…

速记:一个TL431应用电路

一个TL431应用电路 仿真结果 输出电压为&#xff1a;5V 负载电阻为&#xff1a; R4 50Ω 如果负载R4加重 显然负载加重&#xff0c;输出就达不到5V. 三极管T1 的作用 没有三极管的情况 同样是保持负载 R 50Ω 可见三极管的作用就是用来放大电流