RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-514045

KLYSTRON's questions

Martin Hope
KLYSTRON
Asked: 2025-03-19 00:42:43 +0000 UTC

如何将十进制字符串值转换为数字?

  • 7

有一个包含以下类型数据的文本文件:

    -7.271467826427747 17.84
    -7.238717596285217 17.83
    -7.203784017466519 17.82
    -7.171033787323988 17.81
    -7.138283557181459 17.80
    -7.103349978362760 17.79
    -7.068416399544062 17.78
    -7.033482820725363 17.77
    -6.998549241906665 17.76
    -6.961432314411798 17.75
    -6.924315386916930 17.74
    -6.889381808098232 17.73
    -6.852264880603365 17.72
    -6.812964604432329 17.71
    -6.775847676937462 17.70
    -6.738730749442595 17.69
    -6.699430473271558 17.68
    -6.660130197100525 17.67
    -6.618646572253319 17.66
    -6.577162947406114 17.65
    -6.537862671235079 17.64
    -6.496379046387874 17.63
    -6.452712072864502 17.62
    -6.409045099341129 17.61
    -6.365378125817755 17.60

我正在尝试将此文件转换为数组:

import numpy as np

_overall_survival = open('_overall_survival.txt').read().splitlines()
mas = np.array([line.split() for line in _overall_survival[0:]], float, order='F')

print(mas)

在输出中我们得到:

    [[-39.16145859 81.01]
     [-39.81064093 81.02]
     [-40.02431799 81.03]
     ...
     [-2.39123878 17.24]
     [-2.45739627 17.23]
     [-2.5248678 17.22]]

原则上它是有效的,但float它不能提供小数点后数字传输的准确性,这一点很重要。

我尝试使用Decimal:

from decimal import *
import numpy as np

_overall_survival = open('_overall_survival.txt').read().splitlines()
mas = np.array([line.split() for line in _overall_survival[0:]], Decimal, order='F')

print(mas)

在输出中我们得到:

    [['-39.161458590547106' '81.01']
     ['-39.810640930261251''81.02']
     ['-40.024317987368960''81.03']
     ...
     ['-2.391238778978993''17.24']
     ['-2.457396265486048''17.23']
     ['-2.524867804437093''17.22']]

在这种情况下,数组显示所有小数位,但这是字符串数据,仍然需要以某种方式转换为数字数据。

问题:如何Decimal在保持精度的同时获取数字而不是字符串?

添加:

根据CrazyElf 的Stanislav Volodarskiy的建议,Vitalizzare成功组建了该程序的工作原型。

import tkinter as tk
import numpy as np
from tkinter import ttk

with open('_overall_survival.txt') as f:
    array = np.array([list(map(float, line.split())) for line in f])
    with ((np.printoptions(precision=15))):
        mas = array


# ENGINE
# region
def calc():
    with ((np.printoptions(precision=15))):
        result = float((-0.02144927 * float(entry_a.get())
                        ) + (-0.04948455 * float(entry_b.get())
                             ) + 0.50824824)

        row = mas[np.abs(mas[:, 0] - result).argmin()]
        min_row = float(mas[np.abs(mas[:, 0]).argmin()][0])
        max_row = float(mas[np.abs(mas[:, 0]).argmax()][0])

        if min_row >= result >= max_row:
            score['text'] = mas[np.where(mas == row)][1]
            info['text'] = (f'Расчет: {result}\n'
                            f'ТОЧНОГО СОВПАДЕНИЯ НЕТ!\n'
                            f'Ближайшее значение: '
                            f'{mas[np.where(mas == row)][0]}\n'
                            f'Связанное значение: '
                            f'{mas[np.where(mas == row)][1]}')
        elif result < max_row:
            score['text'] = mas[np.where(mas == row)][1]
            info['text'] = (f'Расчет: {result}\n'
                            f'СОВПАДЕНИЙ НЕТ!\n'
                            f'Расчетное время больше: '
                            f'{mas[np.where(mas == row)][1]}')
        elif result > max_row:
            score['text'] = mas[np.where(mas == row)][1]
            info['text'] = (f'Расчет: {result}\n'
                            f'СОВПАДЕНИЙ НЕТ!\n'
                            f'Расчетное время меньше: '
                            f'{mas[np.where(mas == row)][1]}')
        elif result in mas[:, 0]:
            score['text'] = mas[np.where(mas == row)][1]
            info['text'] = (f'Расчет: {result}\n'
                            f'ЕСТЬ СОВПАДЕНИЕ!\n'
                            f'Связанное значение: '
                            f'{mas[np.where(mas == row)][1]}')


def clear():
    entry_a.delete(0, 'end')
    entry_b.delete(0, 'end')
    # combobox.set('')
    score['text'] = ''
# endregion

# WINDOW
# region
app = tk.Tk()
app.title('FRM CLEAR')
width = 600
height = 350
x = int((app.winfo_screenwidth() / 2) - (width / 2))
y = int((app.winfo_screenheight() / 2) - (height / 2))
app.geometry(f'{width}x{height}+{x}+{y}')
app.resizable(width=False, height=False)
app['background'] = '#3d505a'
# endregion

# RESOURCES
# region
ttk.Style().configure('btn.TButton', background='#56676f')
ttk.Style().configure('frm_app.TFrame', background='#3d505a')
ttk.Style().configure('frm_content.TFrame', background='#56676f')

frm_app = ttk.Frame(app, style='frm_app.TFrame', padding=[20, 20])
frm_app.place(relheight=1, relwidth=1)

frm_content = ttk.Frame(frm_app, style='frm_content.TFrame', padding=[10, 10])
frm_content.place(relheight=0.5, relwidth=1)
# endregion


# UI
# region
entry_a = ttk.Entry(frm_content)
entry_a.place(x=5, y=10, height=25, width=40)

entry_b = ttk.Entry(frm_content)
entry_b.place(x=5, y=45, height=25, width=40)

score = ttk.Label(frm_content, text='', font='Tahoma 20 bold')
score.place(x=235, y=10, height=38, width=300)

info = ttk.Label(frm_content, text='', font='Tahoma 12', 
                 foreground='#ffffff', background='#56676f')
info.place(x=235, y=50, height=77, width=300)

tk.Button(app, text="Calc", command=calc
          ).place(x=470, y=305, height=25, width=50)
tk.Button(app, text="Clear", command=clear
          ).place(x=530, y=305, height=25, width=50)
# endregion
app.mainloop()

至于尝试Decimal,我会做出这个选择,但由于将来那里不会发生太多的计算,而是搜索和与数组内容进行比较,所以不会有任何区别(或者它不会影响比较的结果)。

python
  • 1 个回答
  • 48 Views
Martin Hope
KLYSTRON
Asked: 2025-03-04 21:37:03 +0000 UTC

二维数组中的搜索算法

  • 4

需要编写某种分析仪来计算患者的生存率。简单来说,它的运行算法如下: 在此处输入图片描述

将医生计算出的某个值 VAL [ 1 ] 与二维数组中的值 [ 2 ] 进行比较。比较只应与第一列的数据进行比较。

VAL 的值可能与数组中的某个值完全匹配,也可能与数组中的任何值都不匹配,但非常接近其中一个;超出数组中的值的范围。

如果 VAL 值与数组中的某个值完全匹配,那么算法应该向医生打印第 [ 3 ] 行中的下一个值(例如如图所示,VAL = 11 ,算法将打印第 - 280 行中的下一个值)。

至此我已经写出了[ 2 ]阶段的简化模型。下面的代码:

import numpy as np

a = np.array([
    [1, 244], [2, 211], [3, 466], [4, 698], [5, 899], [6, 109], [7, 129], [8, 140], 
[9, 168], [10, 188], [11, 280], [12, 282], [13, 245], [14, 256], [15, 258], 
[16, 305], [17, 352], [18, 345], [19, 365], [20, 348], [21, 440],[22, 424], 
[23, 444], [24, 446], [25, 477], [26, 479], [27, 571], [28, 573], [29, 557], 
[30, 577]
    ], int)

val = 11

if val in a:
    print('СОВПАТЕНИЕ ЕСТЬ!')
    idx = np.where(a == val)
    row = idx[0][0]
    print(f'Связанное значение: {a[row][1]}')
else:
    print('СОВПАДЕНИЙ НЕТ!')
    nearest_val = a.flat[np.abs(a - val).argmin()]
    print(f'Ближайшее значение: {nearest_val}')
    idx = np.where(a == nearest_val)
    row = idx[0][0]
    print(f'Связанное значение: {a[row][1]}')

该模型适用于两种情况:当 VAL 值与数组中的某个值完全匹配时,以及当没有精确的值,但有一个接近它的值时。第三个还没写。模型中使用的数组很小,只有 30 个值,而在成熟计算器中将使用的数组每列包含超过 5000 个值,并且在我看来,在这种情况下使用 Numpy 工具包是合乎逻辑的。

我想听听在这些问题上更有经验的同事的意见:

  1. 其逻辑实现得有多合理?从经验丰富的程序员的角度来看,是否存在更胜任的选择?

  2. 该算法一次搜索数组中的所有值,但如何将搜索限制在仅一列呢?

  3. 在模型中数组很小,但在计算器完整版本中将使用的数组每列包含超过 5000 个值。组织这种数组的最佳方法是什么?使其成为外部文件?或者将所有值移入代码本身?

  4. 我怎样才能以某种方式提取位于数组中的变量的索引值并将它们用作常规 int 值?在模型中我使用以下方法实现了这一点:

idx = np.where(a == val)
row = idx[0][0]

这是精确匹配。但我对这种方法的正确性表示严重怀疑。

补充:在研究strawdog 的评论 的过程中,我设法整理出了以下版本的算法:

import numpy as np

a = np.array([
    [1, 244], [2, 211], [3, 466], [4, 698], [5, 899], [6, 109], [7, 129], [8, 140], 
[9, 168], [10, 188], [11, 280], [12, 282], [13, 245], [14, 256], [15, 258], 
[16, 305], [17, 352], [18, 345], [19, 365], [20, 348], [21, 440],[22, 424], 
[23, 444], [24, 446], [25, 477], [26, 479], [27, 571], [28, 573], [29, 557], 
[30, 577]
    ], int)

val = 2

row = a[np.abs(a[:,0] - val).argmin()]

if val in a[:,0]:
    print(f'СОВПАТЕНИЕ ЕСТЬ!\n'
          f'Связанное значение: {a[np.where(a == row)][1]}')
else:
    print(f'СОВПАДЕНИЙ НЕТ!\n'
          f'Ближайшее значение: {a[np.where(a == row)][0]}\n'
          f'Связанное значение: {a[np.where(a == row)][1]}')

反过来,它与Serge3leo提出的选项非常相似。因此,我暂时就到此为止,稍后我将通过添加处理VAL值超出数组范围的情况的场景来补充答案。非常感谢strawdog和Serge3leo帮助我解决问题!

python
  • 1 个回答
  • 61 Views
Martin Hope
KLYSTRON
Asked: 2024-12-19 03:27:19 +0000 UTC

缩放 div 元素

  • 5

晚安!我必须寻求建议,因为...我自己不太可能弄清楚。实际上有如下结构:

div {
    border: 1px solid black;
}

.window {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
    align-content: center;
    justify-content: center;
}

.items {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    justify-content: center;
    overflow: hidden;
    width: 628px;
    height: 632px;
    padding: 4px;
}

.items>div {
    width: 200px;
    height: 200px;
    margin: 4px;
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./style.css">
    <title></title>
</head>

<body>
    
    <div class="window">
        <div class="items">
            <div class="item_1">1</div>
            <div class="item_2">2</div>
            <div class="item_3">3</div>
            <div class="item_4">4</div>
            <div class="item_5">5</div>
            <div class="item_6">6</div>
            <div class="item_7">7</div>
            <div class="item_8">8</div>
            <div class="item_9">9</div>
        </div>
    </div>

</body>

</html>

窗口容器,由于项目容器位于窗口的中心,项目本身的固定大小为 628px x 632px。 items中有9个div,高度和宽度也固定为200px。任务如下所示:我们需要确保当浏览器窗口的大小减小时,项目及其子 div 也会减小,同时保持具有所有缩进的 3x3 结构。然后,当浏览器窗口放大时,相反,它们达到了最大尺寸并且不再进一步增大。那些。像这样的东西:

屏幕

我已经处理这个问题第三天了,没有太大进展。我们设法使其宽度全部缩放,但并不完全符合需要。这样的事情,我将感谢您的帮助和暗示,以挖掘哪个方向。

css3
  • 1 个回答
  • 23 Views
Martin Hope
KLYSTRON
Asked: 2022-12-16 03:28:02 +0000 UTC

来自变量值的文件名

  • 5

夜!随着应用程序功能的扩展,有必要将程序的结果保存在一个小的文本报告中,为此我使用了以下函数:

def save_report():
    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Текстовые файлы", "*.txt"), ("HTML файлы", "*.html")]
    )
    if not filepath:
        return
    with open(filepath, "w", encoding="UTF-8") as output_file:
        pt_name = patientName_entry.get()
        pt_date = patientDate_entry.get()
        pt_sex = patientSelectSex.get()

        vl_manifestation = manifestationSelect.get()
        vl_hearth = hearthSelect.get()
        vl_transformation = transformationSelect.get()
        vl_deficit = deficitSelect.get()
        vl_infarct = infarctSelect.get()
        vl_thrombolysis = thrombolysisSelect.get()

        vl_conclusion = conclusion.cget("text")

        locale.setlocale(locale.LC_ALL, '')
        report_date = datetime.now()
        report_date = report_date.strftime('%d %B %Y')

        text_report = (
            f'Assessing the risk of surgical intervention in stroke (ARSiS) report.\n'
            f'=====================================================================\n'
            f'отчет сформирован: {report_date}\n\n'
            f'ПАЦИЕНТ:\n{pt_name}\n'
            f'Дата рождения: {pt_date}\n'
            f'Пол: {pt_sex}\n'
            f'---------------------------------------------------------------------\n\n'
            f'АНАМНЕЗ / ДАННЫЕ ИССЛЕДОВАНИЙ:\n'
            f'1. Время с момента манифестации первых симптомов неврологического дефицита:\n'
            f'   -> {vl_manifestation}\n\n'
            f'2. Очаг ишемического инсульта в любом из диаметров, по данным КТ или МРТ головного мозга:\n'
            f'   -> {vl_hearth}\n\n'
            f'3. Геморрагическая трансформация ишемического очага в головном мозге:\n'
            f'   -> {vl_transformation}\n\n'
            f'4. Неврологический дефицит:\n'
            f'   -> {vl_deficit}\n\n'
            f'5. Острый инфаркт миокарда:\n'
            f'   -> {vl_infarct}\n\n'
            f'6. Состояние после тромболитической терапии:\n'
            f'   -> {vl_thrombolysis}\n'
            f'---------------------------------------------------------------------\n\n'
            f'ЗАКЛЮЧЕНИЕ:\n'
            f'{vl_conclusion}'
        )
        output_file.write(text_report)

一切正常,但我希望在保存到文件时,名称是根据变量的值自动形成patientName_entry的patientDate_entry。变量本身是用户手动输入数据的文本字段。结果应该是这样的:

在此处输入图像描述

但我不明白如何实现这一点。作为指导,我使用了这个问题的材料。

python
  • 2 个回答
  • 29 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5