小编fre*_*rie的帖子

显示矩阵值和色彩映射

我需要使用matshow显示我的矩阵的值.但是,使用我现在的代码,我只得到两个矩阵 - 一个有值,另一个有颜色.我该怎么强加他们?谢谢 :)

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

min_val, max_val = 0, 15

for i in xrange(15):
    for j in xrange(15):
        c = intersection_matrix[i][j]
        ax.text(i+0.5, j+0.5, str(c), va='center', ha='center')

plt.matshow(intersection_matrix, cmap=plt.cm.Blues)

ax.set_xlim(min_val, max_val)
ax.set_ylim(min_val, max_val)
ax.set_xticks(np.arange(max_val))
ax.set_yticks(np.arange(max_val))
ax.grid()
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述 在此输入图像描述

python matplotlib matrix imshow

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

根据列值加入pandas数据帧

我对pandas数据帧很新,我遇到了加入两个表的麻烦.

第一个df只有3列:

DF1:
item_id    position    document_id
336        1           10
337        2           10
338        3           10
1001       1           11
1002       2           11
1003       3           11
38         10          146
Run Code Online (Sandbox Code Playgroud)

而第二列完全相同的两列(还有很多其他列):

DF2
item_id    document_id    col1    col2   col3    ...
337        10             ...     ...    ...
1002       11             ...     ...    ...
1003       11             ...     ...    ...
Run Code Online (Sandbox Code Playgroud)

我需要的是执行一个在SQL中看起来如下的操作:

DF1 join DF2 on 
DF1.document_id = DF2.document_id
and
DF1.item_id = DF2.item_id
Run Code Online (Sandbox Code Playgroud)

因此,我希望看到DF2,并补充列"位置":

item_id    document_id    position    col1   col2   col3   ...
Run Code Online (Sandbox Code Playgroud)

用熊猫做这个的好方法是什么?

谢谢!

python mysql sql dataframe pandas

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

Joblib 内存使用量不断增长

我有以下问题。我的目的是处理一堆文档(将所有单词转换为正常形式,例如 'was' --> 'be', 'were' --> 'be', 'went' --> 'go')。这意味着,我需要打开目录中的每个文件,更改其内容并将其保存在另一个目录中。
由于这个过程很耗时,我决定在joblib的帮助下进行并行处理。下面的代码可以正常工作(我的意思是,它执行了它必须执行的操作),但是我遇到了一个巨大的内存问题。
它一直在不断增长!
它会一直增长,直到服务器上根本没有剩余内存。

from joblib import delayed, Parallel

def process_text(text):
    # some function which processes
    # text and returns a new text
    return processed_text


def process_and_save(document_id):
    with open(path + document_id) as f:
        text = f.read()
    text = process_text(text)
    f = open(other_path + document_id, 'w')
    f.write(text)
    f.close()

all_doc_ids = # a list of document ids which I need to process

Parallel(n_jobs=10)(delayed(process_and_save)(doc_id) for doc_id in all_doc_ids)
Run Code Online (Sandbox Code Playgroud)

我还尝试将 joblib 更改为 multipricessing:

pool = …
Run Code Online (Sandbox Code Playgroud)

memory parallel-processing pool python-2.7 joblib

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

SQL - 非空或条件

我对 SQL 很陌生,并且面临以下问题。考虑我们有一个包含两列的表:

A         B
10        20
NULL      15
25        10
50        30
NULL      100
Run Code Online (Sandbox Code Playgroud)

我需要的是选择满足以下条件的行:

要么
1)A为NULL

2)A <B

这意味着,因此我想看到这样的表格:

A         B
10        20
NULL      15
NULL      100
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下查询:

SELECT * FROM mytable
WHERE A < B OR A is NULL
Run Code Online (Sandbox Code Playgroud)

但它似乎不像我想象的那样工作。

正确的查询应该是什么样的?谢谢!

sql

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