小编Tax*_*ney的帖子

控制所有子图上的 xaxis 刻度线大小

我有下面的代码,它在一定程度上起作用。但是,它只会更改其中一个子图的 xticks 大小。如何更改它以更改所有这些的大小?

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

input_file = 'CSP.csv'
output_file = 'sub_plots.png'
df = pd.read_csv(input_file, header = 0)
classes = ['SD','SC','FIR','MD','UA','LB']

f, axarr = plt.subplots(2, 3)
f.tight_layout()

i=0
for r in range(2):
    for c in range(3):
        axarr[r][c].hist(df.CSP_change[(df.Class==classes[i])].values,10,rwidth=1, alpha=0.3)
        axarr[r][c].set_title(classes[i])
        axarr[r][c].spines['top'].set_visible(False)
        axarr[r][c].spines['right'].set_visible(False)
        axarr[r][c].spines['bottom'].set_visible(True)
        axarr[r][c].spines['left'].set_visible(True)
        axarr[r][c].get_xaxis().tick_bottom()
        axarr[r][c].get_yaxis().tick_left()
        plt.xticks(fontsize=6)
        i += 1

#save
plt.savefig(output_file)
Run Code Online (Sandbox Code Playgroud)

直方图

我尝试将 plt 更改为 axarr[r][c] 但它给了我一条关于没有属性 xticks 的错误消息。

python matplotlib pandas

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

有属性但没有方法的类

我是初学者,但我正在尝试在 python 中实现棋盘游戏(奥尔良)。我为游戏状态创建了一个类,并为每个玩家创建了一个类。我曾考虑为每种类型的动作空间创建一个类,并为每个玩家创建一个动作空间的实例,因为每个玩家都有一组共同的动作空间。这些动作空间类中的每一个都有一些属性,通常在__init__()方法中设置。但是,他们没有其他方法。这是类的一个很好的用途,还是我应该更改代码以使用许多单独的变量?我将它们设为类的原因是为了让变量的命名更加直观。下面的代码给出了播放器类和两个动作空间类的示例:

class Player:

    def __init__(self, start_characters, name):
        // other attributes
        self.farmhouse = Farmhouse()
        self.village = Village()

class Farmhouse:

    def __init__(self):
        self.boatman = False
        self.craftsman = False

class Village:

    def __init__(self):
        self.farmer = False
        self.boatman = False
        self.craftsman = False
Run Code Online (Sandbox Code Playgroud)

然后,游戏状态类将具有将玩家实例作为参数的函数,测试动作空间是否具有触发该动作的每个适当要求。

methods class python-3.x

5
推荐指数
2
解决办法
3258
查看次数

如何设置pip环境路径?

我跑:

python -m pip --version
Run Code Online (Sandbox Code Playgroud)

它返回了:

pip 8.1.2 from C:\Users\myonl\AppData\Local\Programs\Python\Python35-32\lib\site-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

所以我将路径设置为上面的路径,但是当我尝试实际使用 pip 时,我得到:

pip install PyQt4
'pip' is not recognised as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python pip environment-variables

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

用不同的替换值替换相同的模式

我有这样的文件(这是一个简化版本):

james sfsf qef qef
qef qef qe fff
qqew james james qef
qefq ffgrsf wsef 
qef james eq james
Run Code Online (Sandbox Code Playgroud)

我想用不同的值替换'james'的每次迭代.这是我在测试代码中的内容:

f=open('file_to_be_read.txt','r')
text=f.read()
matches=len(re.findall('james',text))
f.close()
number=0
for x in range(matches):
    new_text=re.sub(r'james',str(number),text,count=1)
    number+=1
r=open('result_file.txt','w')
r.write(new_text)
r.close()
Run Code Online (Sandbox Code Playgroud)

但它只是将第一个'james'替换为2.而不是产生我想要的以下结果:

1 sfsf qef qef
qef qef qe fff
qqew 2 3 qef
qefq ffgrsf wsef 
qef 4 eq 5
Run Code Online (Sandbox Code Playgroud)

我想通过重复带有count = 1的re.sub,我每次都会替换1个詹姆斯但允许我更改替换值.

python regex

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

将 pandas 中的字符串拆分为单独的列

我有一个包含大量数据和 1 列的数据框,其结构如下:

index    var_1
1        a=3:b=4:c=5:d=6:e=3
2        b=3:a=4:c=5:d=6:e=3
3        e=3:a=4:c=5:d=6
4        c=3:a=4:b=5:d=6:f=3
Run Code Online (Sandbox Code Playgroud)

我正在尝试将该列中的数据构造为如下所示:

index    a   b   c   d   e   f
1        3   4   5   6   3   0
2        4   3   5   6   3   0
3        4   0   5   6   3   0
4        4   5   3   6   0   3
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经做了以下事情:

df1 = df['var1'].str.split(':', expand=True)

然后,我可以循环遍历 df1 的列,并在“=”上进行另一次分割,但随后我将只有大量杂乱无章的标签列和值列。

python dataframe pandas

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