小编Sha*_*nde的帖子

使用python中的索引展平嵌套列表

我有一个清单 ['','','',['',[['a','b']['c']]],[[['a','b'],['c']]],[[['d']]]]

我想用索引展平列表,输出应如下所示:

flat list=['','','','','a','b','c','a','b','c','d']
indices=[0,1,2,3,3,3,3,4,4,4,5]
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

我已经试过了:

def flat(nums):
    res = []
    index = []
    for i in range(len(nums)):
        if isinstance(nums[i], list):
            res.extend(nums[i])
            index.extend([i]*len(nums[i]))
        else:
            res.append(nums[i])
            index.append(i)
    return res,index
Run Code Online (Sandbox Code Playgroud)

但这不能按预期工作。

python-3.x

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

如何在 matplotlib.pyplot.imshow 中标记单元格(绘制单元格边框)

我有一个小的 2d 矢量要显示:

import matplotlib.pyplot as plt
import numpy as np

img = np.random.rand(4,10)
plt.imshow(img, cmap='Reds')
Run Code Online (Sandbox Code Playgroud)

如下:

在此处输入图片说明

但现在我想标记一个特定的单元格,以便让读者将注意力集中在那个单元格上。因为这是特别感兴趣的......

因此,像这个单元格的边框会很好:

在此处输入图片说明

有人知道如何以matplotlib方便的方式存档吗?

python matplotlib

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

Mypy:用类类型注释变量

我在将Python 3.6类中的变量分配给特定类型(Pathlib路径)时遇到麻烦。按照link的示例,我尝试创建一个TypeVar,但mypy仍然抛出错误。我想确保__init__.py仅在初始化时初始化的类变量在编译时就接收到特定类型。因此,这只是一项检查,以确保我不会无意中为这些类变量设置字符串或其他内容。

有人可以建议正确的方法吗?

这是一些简单的代码。

import pathlib
from typing import Union, Dict, TypeVar, Type

Pathtype = TypeVar('Pathtype', bound=pathlib.Path)

class Request:

    def __init__(self, argsdict):

        self._dir_file1: Type[Pathtype] = argsdict['dir_file1']
        self._dir_file2: Type[Pathtype] = argsdict['dir_file2']
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Request.py:13: error: Invalid type "Request.Pathtype"
Request.py:14: error: Invalid type "Request.Pathtype"
Run Code Online (Sandbox Code Playgroud)

python-3.x mypy

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

熊猫:智能创建新列

这是一个非常笼统的问题,我正在寻求解决方案,以应对以下情况:

我经常发现自己在数据框中创建了一个额外的列,并且我想使用类似以下的内容:

df['new_col'] = df['old_col_1']+df['old_col_2']
Run Code Online (Sandbox Code Playgroud)

但是,除非操作非常简单,否则它会给出“ TypeError:无法将序列转换为[class'whatever']类”,因此我必须使用笨拙的方法。例:

df = pd.DataFrame({'Year':[2018,2017,2016,2017,2016,2018,2018],'Month':[1,1,1,2,2,2,3],
                   'Value':[521,352,32,125,662,123,621]})
Run Code Online (Sandbox Code Playgroud)

我想要一个“日期”列,并且最终这样做:

from datetime import datetime as dt
df['Date'] = None
for i in df.index:
    df1.loc[i,'Date'] = dt(df1.loc[i,'Year'],df1.loc[i,'variable'],1)
Run Code Online (Sandbox Code Playgroud)

在其他情况下,我发现自己在做:

datelist = []
for i in df.index:
    datelist.append(dt(df1.loc[i,'Year'],df1.loc[i,'variable'],1))
df['Date'] = datelist
Run Code Online (Sandbox Code Playgroud)

显然,这只是一个示例,在很多情况下,我最终都会使用这两种方法。我是否正确地认为这些方法不是pythonic的?基于其他列生成稍微复杂的列的更好方法是什么?

python-3.x pandas

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

标签 统计

python-3.x ×3

matplotlib ×1

mypy ×1

pandas ×1

python ×1