小编Nik*_*ido的帖子

使用Python在SQLite数据库中插入二进制文件

我正在尝试编写一个简单的Python脚本,将.odt文档插入到SQLite数据库中.这是我到目前为止所做的,但它似乎不起作用:

f=open('Loremipsum.odt', 'rb')
k=f.read()
f.close()
cursor.execute="INSERT INTO notes (note) VALUES ('%s')" %(sqlite.Binary(k))
cursor.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误消息,但据我所知,记录未插入.我究竟做错了什么?另外,如何将存储的文档提取回来?谢谢!

python sql sqlite binary blob

14
推荐指数
3
解决办法
3万
查看次数

使用两种不同的装饰器实现来装饰所有类方法的元类

我在我写的这个元类装饰器上应用装饰器的实现有问题:

def decorateAll(decorator):
    class MetaClassDecorator(type):

        def __new__(meta, classname, supers, classdict):
            for name, elem in classdict.items():
                if type(elem) is FunctionType:
                    classdict[name] = decorator(classdict[name])
            return type.__new__(meta, classname, supers, classdict)
    return MetaClassDecorator
Run Code Online (Sandbox Code Playgroud)

这是我使用元类的类:

class Account(object, metaclass=decorateAll(Counter)):

    def __init__(self, initial_amount):
        self.amount = initial_amount

    def withdraw(self, towithdraw):
        self.amount -= towithdraw

    def deposit(self, todeposit):
        self.amount += todeposit

    def balance(self):
        return self.amount
Run Code Online (Sandbox Code Playgroud)

当我将一个装饰器传递给装饰器元类时,一切似乎都运行良好:

def Counter(fun):
    fun.count = 0
    def wrapper(*args):
        fun.count += 1
        print("{0} Executed {1} times".format(fun.__name__, fun.count))
        return fun(*args)
    return wrapper
Run Code Online (Sandbox Code Playgroud)

但是当我使用以这种方式实现的装饰器时:

class Counter():

    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python metaclass decorator class-method

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

preg_split vs mb_split

根据PHP手册,uPCRE正则表达式的修饰符支持对模式和主题字符串的UTF-8支持.

考虑到这一点,使用PCRE表达式与u修饰符和相应的mb_*多字节字符串函数之间有什么区别吗?(假设所有字符串都是UTF-8编码的.)


作为一个例子,考虑preg_splitvs mb_split:两者

preg_split('/' . $pattern . '/u', $string);
Run Code Online (Sandbox Code Playgroud)

mb_split($pattern, $string);
Run Code Online (Sandbox Code Playgroud)

似乎返回相同的结果.那么,应该首选哪一个?它甚至重要吗?

php regex pcre split

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

实现二阶矩流逼近的 Alon-Matias-Szegedy 算法

我正在尝试在 python 中重新创建一个函数来估计数据流的二阶矩。

\n\n

正如乌尔曼书《海量数据集的挖掘》中所述,第二个时刻:

\n\n
\n

是 m_i \xe2\x80\x99s 的平方和。它有时被称为意外数,因为它衡量流中元素分布的不均匀程度。

\n
\n\n

其中 m_i 元素是流中的单义元素。

\n\n

例如,有这个玩具问题\\数据流:

\n\n
a, b, c, b, d, a, c, d, a, b, d, c, a, a, b\n
Run Code Online (Sandbox Code Playgroud)\n\n

我们这样计算第二个时刻:

\n\n
5^2 + 4^2 + 3^2 + 3^2 = 59\n
Run Code Online (Sandbox Code Playgroud)\n\n

(因为\'a\'在数据流中出现了5次,\'b\'出现了4次,以此类推)

\n\n

由于我们无法将所有数据流存储在内存中,因此我们可以使用一种算法来估计二阶矩:

\n\n

Alon -Matias-Szegedy 算法(AMS 算法),使用以下公式估计二阶矩:

\n\n
E(n *(2 * X.value \xe2\x88\x92 1))\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中 X 是流的单义元素,是随机选择的,X.value 是一个计数器,当我们读取流时,每当我们遇到 x 元素从我们选择它时起的另一个出现时,它就会加 1 。

\n\n

n表示数据流的长度,“E”是平均值。

\n\n

以前面的数据流为例,假设我们在数据流的第 13 个位置选择了“a”,在第 8 个位置选择了“d”,在第 …

python random data-mining bigdata data-stream

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

在保留格式的同时从文件读取XML和文件

我使用这个perl代码从文件中读取XML,然后写入另一个文件(我的完整脚本有代码来添加属性):

#!usr/bin/perl -w

use strict;
use XML::DOM;
use XML::Simple;

my $num_args = $#ARGV + 1;

if ($num_args != 2) {
  print "\nUsage: ModifyXML.pl inputXML outputXML\n";
  exit;
}

my $inputPath = $ARGV[0];
my $outputPath = $ARGV[1];

open(inputXML, "$inputPath") || die "Cannot open $inputPath \n";

my $parser = XML::DOM::Parser->new();
my $data = $parser->parsefile($inputPath) || die "Error parsing XML File";

open my $fh, '>:utf8', "$outputPath" or die "Can't open $outputPath for writing: $!\n";
$data->printToFileHandle($fh);

close(inputXML);
Run Code Online (Sandbox Code Playgroud)

但是这不会保留像换行符这样的字符.例如,这个XML:

<?xml version="1.0" encoding="utf-8"?>
<Test>
    <Notification Content="test1     testx …
Run Code Online (Sandbox Code Playgroud)

xml format perl parsing

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

UnboundLocalError:赋值前引用了局部变量“batch_index”

这不是我的代码,这里是一行,它显示了一个问题:

model.fit(trainX, trainY, batch_size=2, epochs=200, verbose=2)
Run Code Online (Sandbox Code Playgroud)

(正如我现在所想的,这段代码很可能使用了旧版本的 TF,因为 'epochs' 被写为 'nb_epoch')。

代码的最后更新来自:2017年1月11日!

我已经尝试了互联网上的所有内容(不是那么多),包括查看 tensorflow/keras 的源代码以获取一些提示。只是为了说明我在代码中没有名为“batch_index”的变量。

到目前为止,我已经查看了 TF 的不同版本(tensorflow/tensorflow/python/keras/engine/training_arrays.py)。似乎都是 2018 年的版权,但有些以函数 fit_loop 开头,有些以 model_iteration 开头(可能是 fit_loop 的更新)。

所以,这个“batch_index”变量只能在第一个函数中看到。

我想知道我是否朝着正确的方向前进??!

显示代码没有意义,因为正如我所解释的,代码中首先没有这样的变量。

但是,这是函数“stock_prediction”的一些代码,它给出了错误:

model.fit(trainX, trainY, batch_size=2, epochs=200, verbose=2)
Run Code Online (Sandbox Code Playgroud)

def stock_prediction():

    # Collect data points from csv
    dataset = []

    with open(FILE_NAME) as f:
        for n, line in enumerate(f):
            if n != 0:
                dataset.append(float(line.split(',')[1]))

    dataset = np.array(dataset)

    # Create dataset matrix (X=t and Y=t+1)
    def create_dataset(dataset):
        dataX = [dataset[n+1] for n in range(len(dataset)-2)]
        return …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow

6
推荐指数
2
解决办法
9096
查看次数

Keras LSTM 中的内核和循环内核

我试图在脑海中画出 LSTM 的结构,但我不明白什么是内核和循环内核。根据 LSTM 部分的这篇文章,内核是与输入相乘的四个矩阵,循环内核是与隐藏状态相乘的四个矩阵,但是,该图中的这 4 个矩阵是什么?

在此输入图像描述

是城门吗?

我正在使用这个应用程序测试以下代码的变量如何unit影响内核、循环内核和偏差:

model = Sequential()
model.add(LSTM(unit = 1, input_shape=(1, look_back)))
Run Code Online (Sandbox Code Playgroud)

它让look_back = 1我回想起:

在此输入图像描述

unit = 2它返回我这个

在此输入图像描述

有了unit = 3这个

在此输入图像描述

用这个值进行测试我可以推断出这个表达式

在此输入图像描述

但我不知道这在内部是如何运作的。<1x(4u)>或是什么意思<ux(4u)>u = units

python machine-learning lstm keras

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

使用机器学习让计算机学习微积分

是否有任何已知的方法可以使机器学习微积分?

我了解到教计算导数非常简单,因为可以实现算法。

同时,集成的实现是可能的,但由于算法的复杂性,很少或从未完全实现。

我很好奇在使用机器学习科学评估和计算积分的领域是否有任何学术成功。


编辑

我有兴趣教计算机使用神经网络或类似方法进行集成。

integration implementation machine-learning calculus neural-network

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

快速和pythonic的方式来找出一个字符串是一个回文

[编辑:有人指出我使用了不正确的palindrom概念,现在我已经编辑了正确的功能.我在第一个和第三个例子中也做了一些优化,其中for语句一直到它达到字符串的一半]

我已经为一个检查字符串是否为回文的方法编写了三个不同的版本.该方法实现为类"str"的扩展

该方法还将字符串转换为小写,并删除所有准时和空格.哪一个更好(更快,pythonic)?

以下是方法:

1)这是我想到的第一个解决方案:

    def palindrom(self):
        lowerself = re.sub("[ ,.;:?!]", "", self.lower())
        n = len(lowerself)
        for i in range(n//2):
            if lowerself[i] != lowerself[n-(i+1)]:
               return False
        return True
Run Code Online (Sandbox Code Playgroud)

我认为这个更快,因为没有字符串的转换或反转,并且for语句在第一个不同的元素处断开,但我不认为这是一种优雅和pythonic的方式

2)在第二个版本中,我使用在stackoverflow上创建的解决方案进行转换(使用高级切片字符串[:: - 1])

# more compact
def pythonicPalindrom(self):
    lowerself = re.sub("[ ,.;:?!]", "", self.lower())
    lowerReversed = lowerself[::-1]
    if lowerself == lowerReversed:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

但我认为切片和字符串之间的比较使这个解决方案变慢.

3)我想到的第三个解决方案,使用迭代器:

# with iterator
def iteratorPalindrom(self):
    lowerself = re.sub("[ ,.;:?!]", "", self.lower())
    iteratorReverse = reversed(lowerself)
    for char in lowerself[0:len(lowerself)//2]:
        if next(iteratorReverse) != char:
            return …
Run Code Online (Sandbox Code Playgroud)

python string optimization time-complexity

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

按值复制列表列表而不是引用

要理解为什么我在程序中遇到错误,我试图找到一个决定因素的"次要",我写了一个更简单的程序,因为我的变量搞砸了.下面这个函数接受一个2*2矩阵作为输入,并返回一个包含其行的列表(毫无意义和低效,我知道,但我正在试图理解这背后的理论).

def alpha(A):   #where A will be a 2 * 2 matrix
    B = A       #the only purpose of B is to store the initial value of A, to retrieve it later
    mylist = []
    for i in range(2):
        for j in range(2):
            del A[i][j]
        array.append(A)
        A = B
    return mylist
Run Code Online (Sandbox Code Playgroud)

但是,在这里似乎B被动态赋值为A ,因为我无法将B的初始值存储在B中以便以后使用它.这是为什么?

python variables reference deep-copy python-2.7

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