小编tot*_*i08的帖子

类中的信号处理程序

我正在尝试使用信号 python模块编写一个类来处理信号.有一个类的原因是避免使用全局变量.这是我提出的代码,但不幸的是它不起作用:

import signal
import constants


class SignalHandler (object):
    def __init__(self):        
        self.counter = 0
        self.break = False
        self.vmeHandlerInstalled = False

    def setVmeHandler(self):        
        self.vmeBufferFile = open('/dev/vme_shared_memory0', 'rb')
        self.vmeHandlerInstalled = True

        signal.signal(signal.SIGUSR1, self.traceHandler)
        signal.siginterrupt(signal.SIGUSR1, False)
        #...some other stuff...


    def setBreakHandler(self):
        signal.signal(signal.SIGINT, self.newBreakHandler)
        signal.siginterrupt(signal.SIGINT, False)

    def newBreakHandler(self, signum, frame):        
        self.removeVMEHandler()
        self.break = True

    def traceHandler(self, signum, frame):
        self.counter += constants.Count        

    def removeVMEHandler(self):    
        if not self.vmeHandlerInstalled: return
        if self.vmeBufferFile is None: return

        signal.signal(signal.SIGUSR1, signal.SIG_DFL)

        self.vmeHandlerInstalled = False
Run Code Online (Sandbox Code Playgroud)

在主程序中,我以下列方式使用此类:

def run():
    sigHandler = SignalHandler() …
Run Code Online (Sandbox Code Playgroud)

python signals

8
推荐指数
1
解决办法
6101
查看次数

为什么我收到数据转换警告?

我是这方面的新手,所以我很感激你的帮助.我正在玩mnist数据集.我从http://g.sweyla.com/blog/2012/mnist-numpy/获取了代码,但将"images"更改为2维,以便每个图像都是特征向量.然后我在数据上运行PCA,然后运行SVM并检查分数.一切似乎工作正常,但我得到以下警告,我不知道为什么.

"DataConversionWarning: A column-vector y was passed when a 1d array was expected.\
Please change the shape of y to (n_samples, ), for example using ravel()."
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事,但似乎无法摆脱这个警告.有什么建议?这是完整的代码(忽略缺少的缩进,似乎他们有点混乱在这里复制代码):

import os, struct
from array import array as pyarray
from numpy import append, array, int8, uint8, zeros, arange
from sklearn import svm, decomposition
#from pylab import *
#from matplotlib import pyplot as plt

def load_mnist(dataset="training", digits=arange(10), path="."):
"""
Loads MNIST files into 3D numpy arrays

Adapted from: http://abel.ee.ucla.edu/cvxopt/_downloads/mnist.py
"""

    if dataset …
Run Code Online (Sandbox Code Playgroud)

python warnings scikit-learn

5
推荐指数
1
解决办法
7920
查看次数

Python ctype-bitfields:获取位域位置

我创建了一个带有相应Union的ctype位域结构,通过单个位域和整数值来访问它.我能够使用包含字段名称的变量设置单个字段,但现在我想知道特定字段属于哪个字节.这是我的代码示例:

import ctypes

c_short = ctypes.c_uint16

class Flags_bits(ctypes.LittleEndianStructure):
    _fields_ = [
        ("bitField1", c_short, 1),
        ("bitField2", c_short, 4),
        ("bitField3", c_short, 6),
        ("bitField4", c_short, 1),
        ("bitField5", c_short, 2),
        ("bitField6", c_short, 2),

        ("bitField7", c_short, 6),
        ("bitField8", c_short, 4),
        ("bitField9", c_short, 4),
        ("bitField10", c_short, 1),
        ("bitField11", c_short, 1)]

class Flags(ctypes.Union):
    _fields_ = [("b", Flags_bits),
                ("asInt", c_short*6)]

def setFlag (flagName, value):
    flags = Flags()
    setattr(flags.b, flagName, value)        
    print getattr(flags.b, flagName)
Run Code Online (Sandbox Code Playgroud)

现在我想知道的是我的标志属于哪个整数(即哪个flags.asInt [i]),我正在寻找一种"get_location"属性来获取结构中的标志位置并从中检索'i'整数的索引,但我找不到任何东西有没有简单的方法呢?

每个回复都要提前感谢!

python ctypes bit-fields

4
推荐指数
1
解决办法
1588
查看次数

Python 3:读取包含德语变音符号的UTF-8文件

我搜索并发现了许多类似的问题和文章,但没有一个能让我解决这个问题.

我使用Python 3.5.0(V3.5.0:374f501f4567,2015年9月13日,2点27分37秒)[MSC v.1900 64位(AMD64)]在Windows 10.

我有一个简单的文本文件,它以UTF-8编码为Windows,如下所示: 在此输入图像描述

我想要做的就是将此文件的内容读入Python字符串并在标准控制台中正确显示.

这是第一次失败的尝试:

    file_name=r'c:\temp\encoding_test.txt'
    fh=open(file_name,'r')
    f_str=fh.read()
    fh.close()
    print(f_str)
Run Code Online (Sandbox Code Playgroud)

print语句引发了一个异常:

'charmap'编解码器无法对位置100中的字符'\ u201e'进行编码:字符映射到未定义

使用调试器,f_str包含以下内容:

'我希望在将此文件读入Python后正确显示以下字符:\n \nÃ"Ã-ÜäÃüÃÃÃ?\n"

这对我来说已经非常令人费解了.Python 3不是在任何地方都使用UTF-8作为默认值吗?什么其他编码可以工作?我尝试了所有的Notepad ++支持,没有用.

好吧,有点复杂,我试过:

    import codecs
    file_name=r'c:\temp\encoding_test.txt'
    my_encoding='utf-8'
    fh=codecs.open(file_name,'r',encoding=my_encoding)
    f_str=fh.read().encode(my_encoding)
    fh.close()
    print(f_str)
Run Code Online (Sandbox Code Playgroud)

这至少不会引发异常,而是收益率

b'我希望在将此文件读入Python后正确显示以下字符:\ r \n\r \n\xc3\x84\xc3\x96\xc3\x9c\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\r \n'我

这对我来说完全是一团糟.这里有人可以帮我解决这个问题吗?

python encoding utf-8

4
推荐指数
2
解决办法
5531
查看次数

python绘图日期轴作为字符串而不是日期

我想使用 pythonplotly 创建一个条形图,其中 x 轴日期作为字符串/类别。由于某种原因,plotly 不断将字符串转换为日期。我的 x 轴是日期的连续“时间线”,而不是我期望的类别。

我的问题:如何构建一个条形图,将我的日期作为类别而不是日期处理?

最小的例子:

d = {'date': ['2018-08-04', '2018-08-02','2018-08-03', '2018-08-11','2018-08-11'], 'score': [3, 4, 6, 2,8]}
df = pd.DataFrame(data=d)

data = [go.Bar(
            x=df['date'],
            y=df['score']
    )]

offline.iplot(data, filename='basic-bar')
Run Code Online (Sandbox Code Playgroud)

例子:

在此输入图像描述

python plotly

4
推荐指数
1
解决办法
8258
查看次数

Python:一个奇怪的Index out of Bounds案例

我写了一个代码来查找时间序列中的峰值,我希望它也可以绘制本地基线.目前我正在使用由两个cosinusoids构建的测试时间序列.

代码如下,其中p_times是峰值中心的时间:

step = 0.1  
time = np.arange(0, 10.1, step)

#Does stuff to find peaks

p_times = [0.9, 1., 1.1, 1.9, 2., 2.1, 2.9, 3., 3.1, 3.9, 4., 4.1, 4.9, 5., 5.1, 5.9, 6., 6.1, 6.9, 7., 7.1, 7.9, 8., 8.1, 8.9, 9., 9.1]

idx = np.array([np.where(time == x)[0][0] for x in p_times])
Run Code Online (Sandbox Code Playgroud)

最后一条指令应该给出一个数组,其中包含与峰值对应的时间元素的索引,但我得到:

IndexError: index 0 is out of bounds for axis 0 with size 0
Run Code Online (Sandbox Code Playgroud)

这个案例的好奇之处在于将cosinusoids参数更改为看似"幸运"的值,峰值的位置也会发生变化,代码可以正常工作:

p_times = [0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., …
Run Code Online (Sandbox Code Playgroud)

python numpy

2
推荐指数
1
解决办法
102
查看次数

三角形的Python代码

我有这个任务要做:编写一个名为triangle的过程,它接受一个数字然后打印出一个高度的三角形.就像这样:

      *
     ***
    *****
   *******
Run Code Online (Sandbox Code Playgroud)

我找到的唯一解决方案是这段代码:

def triangle(size):
    spaces=""
    stars=""
    line=""
    for i in range(0,size):
        for j in range(0,(size-1-i)+11-(size-1-i)-i): 
            line=line+" "

        for k in range(0,2*i+1):
            line=line+"*"

        print(line)
        line=""

    triangle(2)
    triangle(3)
    triangle(4)
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有人有更简单的方法来做这个或简化这些代码并使其更具可读性的方法?

python

1
推荐指数
1
解决办法
869
查看次数

Python:重复查找两个特殊字符之间的字符串

我有一个这样的段落:

paragraph = "Dear {{userName}},

You have been registered successfully. Our Manager {{managerName}} will contact soon.

Thanks"
Run Code Online (Sandbox Code Playgroud)

我需要解析{{}}中的所有字符串.段落中可能还有更多类似内容.

我试过这个解决方案:

result = re.search('{{(.*)}}',paragraph)
print(result.group(1))
# output is 'userName}} {{ManagerName' 
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

["userName","managerName",....]
Run Code Online (Sandbox Code Playgroud)

请帮忙.

谢谢

python regex

1
推荐指数
1
解决办法
91
查看次数