小编use*_*757的帖子

从 pythonanywhere 添加/提交时,将 `__pycache__` 保留在我的存储库之外

我在本地 win7 机器上构建了一个 Web 应用程序。我用 pycharm 做到了,并使用 git 作为版本控制。我是一个完全的 git 新手。

我将存储库放在 github 上,以便我可以将 web 应用程序暂存到我的 pythonanywhere 服务器。

在 pythonanywhere 方面,我对各种文件进行了一些小的编辑。我想将这些更改提交回存储库。

(udemy) 10:44 ~/keystone (master)$ git commit -m "got it running on pythonanywhere staging"
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
        modified:   keystone/settings/base.py
        modified:   keystone/settings/local_postgres.py
        modified:   keystone/settings/staging_straits.py
        deleted:    p0150_1.pdf
Untracked files:
        crapboard/__pycache__/
        crapboard/migrations/__pycache__/
        crapboard/templatetags/__pycache__/
        keystone/__pycache__/
        keystone/settings/__pycache__/
no changes added to commit
Run Code Online (Sandbox Code Playgroud)

我想将三个修改的文件和一个删除提交到存储库。

所以我做了

(udemy) 14:03 ~/keystone (master)$ git add --all
(udemy) 14:03 ~/keystone …
Run Code Online (Sandbox Code Playgroud)

git pythonanywhere

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

除非我删除/重新启动控制台,否则重新导入模块到pycharm控制台不会更新代码

该示例显示:

我创建一个简单的模块(斐波那契计算器)我启动pycharm控制台,导入模块,在控制台内运行函数,它的工作原理.现在我在模块中编辑一些打印文本.回到控制台并运行"import fibagain"
控制台似乎没有抱怨就这样做了.但是当我运行fib()函数时,它仍然给我早期版本的结果.我无法让控制台看到fibagain.py文件的更新版本.如果我删除控制台并再次打开它,那么'import fibagain',运行fib(3)将给我最新版本.

抱歉,但不允许在此处发布正确的图片链接.这个地址显示了screencapture:

在此输入图像描述

python console module pycharm

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

用Nan填充numpy上三角矩阵而不是零

我生成了一个matplotlib 3d曲面图.我只需要在图上看到矩阵的上三角形一半,因为另一半是多余的.

np.triu()使矩阵零的冗余一半,但我更喜欢如果我可以使它们为Nans,那么这些单元格在表面图上根本不显示.

什么是pythonic方式来填充NaN而不是零?我无法使用NaN进行搜索和替换0,因为零将出现在我想要显示的合法数据中.

python numpy matplotlib

8
推荐指数
2
解决办法
2384
查看次数

numpy索引切片,无

通过一个滑动窗口示例为numpy.试图了解,Nonestart_idx = np.arange(B[0])[:,None]

foo = np.arange(10)
print foo
print foo[:]
print foo[:,]
print foo[:,None]
Run Code Online (Sandbox Code Playgroud)

的效果None似乎是转置阵.

[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]
 [8]
 [9]]
Run Code Online (Sandbox Code Playgroud)

但我不完全确定.我无法找到解释第二个参数(None)的内容的文档.这也是google的一个难点.该numpy的阵列文档让我觉得它是与先进的索引,但我不能肯定不够.

python numpy

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

矢量化numpy bincount

我有一个2d numpy数组.A 我想应用于np.bincount()矩阵的每一列A来生成另一个2d数组B,该数组由原始矩阵的每列的bincounts组成A.

我的问题是np.bincount()是一个类似于1d数组的函数.它不是像B = A.max(axis=1)例如的数组方法.

B除了令人讨厌的for-loop之外,还有更多的pythonic/numpythic方法来生成这个数组吗?

import numpy as np

states = 4
rows = 8
cols = 4

A = np.random.randint(0,states,(rows,cols))
B = np.zeros((states,cols))

for x in range(A.shape[1]):
    B[:,x] =  np.bincount(A[:,x])
Run Code Online (Sandbox Code Playgroud)

python numpy

8
推荐指数
2
解决办法
860
查看次数

控制 Altair 区域的堆栈顺序

我有一个mark_area以明显荒谬的顺序堆叠的图表。我更喜欢将最大的层放在底部,并在上面减少。

这是图表的图片,标有首选顺序:

在此处输入图片说明

我试图制作一个玩具示例:

import random
import altair as alt

seed = {"date": pd.date_range('1/1/2019',periods=20,freq="M"),
        "jack": random.sample(range(100, 500), 20), 
        "roy":random.sample(range(20, 90), 20),
        "bill":random.sample(range(600, 900), 20), 
        }

df = pd.DataFrame.from_dict(seed)
df = df.melt(id_vars="date", var_name="person", value_name="measure")
alt.renderers.enable('notebook')
alt.Chart(df).mark_area().encode(
                        x=alt.X(
                            'date',                        
                        ),
                        y=alt.Y(
                            'measure',
                        ),
                        color='person',                                                                               
                )
Run Code Online (Sandbox Code Playgroud)

这会自动生成如下图表:

在此处输入图片说明

我尝试重复使用在别处找到的一些咒语,但它们无声无息。我使用“升序”还是“降序”没有区别:

alt.Chart(df).mark_area().encode(
                        x=alt.X(
                            'date',                        
                        ),
                        y=alt.Y(
                            'measure',
                             sort=alt.EncodingSortField(
                                field="measure",
                                op="sum",
                                order="ascending")  
                        ),
                        color='person',                                                                               
                )
Run Code Online (Sandbox Code Playgroud)

python altair

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

将文本转换为整数

我有一个 CHAR 列,其中包含对打印整数的凌乱 OCR 扫描。

我需要在该列上执行 SUM() 运算符。但我无法正确投射。

;Good
sqlite> select CAST("123" as integer);
123

;No Good, should be '323999'
sqlite> select CAST("323,999" as integer);
323
Run Code Online (Sandbox Code Playgroud)

我相信SQLite的解释逗号作为标志着“结束的值可能的最长前缀可以解释为一个整数

我更愿意避免编写 python 脚本来对本专栏进行数据清理的痛苦。有没有什么聪明的方法可以严格地使用 SQL 来做到这一点?

sql sqlite

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

工作日datetimeindex上的棘手切片规范

我有一个带有基于营业日的DateTimeIndex的pandas数据帧.对于索引中的每个月,我还指定了一个"标记"日.

这是该数据帧的玩具版本:

# a dataframe with business dates as the index
df = pd.DataFrame(list(range(91)), pd.date_range('2015-04-01', '2015-6-30'), columns=['foo']).resample('B').last()

# each month has an single, arbitrary marker day specified
marker_dates = [df.index[12], df.index[33], df.index[57]]
Run Code Online (Sandbox Code Playgroud)

对于索引中的每个月,我需要计算foo该月特定行中行的列的平均值.

我需要两种不同的方式来指定这些切片:

1)每天到第n天.

示例可能是(该月的第2至第4个工作日).所以四月平均为1(apr2),4(apr3)和5(apr 6)= 3.33.可能是33(可能4),34(可能5),35(可能是6)= 34.我不认为指数中没有出现的周末/假日为天.

2)标记日期之前/之后的第n天至标记日期之前/之后的第n天.

示例可以是"从标记日期之前1天到每个月中标记日期之后1天的切片的平均值"例如.4月,标记日期为17Apr.看看该指数,我们想要平均值为apr16,apr17和apr20.

对于示例1,我有一个丑陋的解决方案,在那个月我将切掉那个月的行,然后应用 df_slice.iloc[m:n].mean()

每当我开始用熊猫做迭代的事情时,我总是怀疑我做错了.所以我想有一种更干净,更pythonic /矢量化的方式来制作这个月的结果

对于示例2,我不知道基于多个月的任意日期进行切片平均的好方法.

python pandas

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

控制轴的标题标签颜色

努力设置我的轴​​标签的颜色。

base = alt.Chart(xf.loc['2017':].reset_index(), title="trouble").encode(
    x='Date'
)

rigs = base.mark_line(color='blue').encode(
    alt.Y('Total Oil Rigs', scale=alt.Scale(zero=False),axis=alt.Axis( title='I should BLUE'))
)

prod = base.mark_line(color='green').encode(
    alt.Y('US Crude Production', scale=alt.Scale(zero=False),axis=alt.Axis( title='I should be GREEN'))
)

alt.layer(
    rigs,
    prod
).resolve_scale(
    y='independent'
).configure_axisLeft(labelColor='blue').configure_axisRight(labelColor='green')
Run Code Online (Sandbox Code Playgroud)

我可以使用configure_axisLeft/Right()函数设置 #2 和 #3 ,但我找不到设置轴标题颜色的方法(#1、#4)。我也没有在altair.Axis文档中看到一个选项。 在此处输入图片说明

python altair

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

更改 Altair 中折线图的重叠顺序

我在 Altair 中生成折线图。我想控制哪些行位于行堆栈的“顶部”。在我的示例中,我希望红线位于顶部(最新日期),然后下降到黄色(最旧日期)位于底部。

在此输入图像描述

我试图用sortof 的参数来控制它alt.Color ,但无论sort='ascending'sort='descending'线重叠的顺序都不会改变。

我怎样才能控制这个?希望我可以在不对源数据帧本身进行排序的情况下完成此操作。

data = [{'review_date': dt.date(year=2022, month=2, day=24),  'a':19, 'b':17, 'c':12, 'd':8},
{'review_date': dt.date(year=2022, month=2, day=23),  'a':20, 'b':16, 'c':14, 'd':8},
{'review_date': dt.date(year=2022, month=2, day=22),  'a':22, 'b':16, 'c':14, 'd':10},
{'review_date': dt.date(year=2022, month=2, day=21),  'a':14, 'b':13, 'c':12, 'd':5},]

df = pd.DataFrame(data).melt(id_vars=['review_date'], value_name='price', var_name='contract')
df.review_date = pd.to_datetime(df.review_date)

domain = df.review_date.unique()
range_ = ['red', 'blue', 'gray', 'yellow'] 

alt.Chart(df, title='foo').mark_line().encode(
x=alt.X('contract:N'),
y=alt.Y('price:Q',scale=alt.Scale(zero=False)),
color=alt.Color('review_date:O', sort="ascending", scale=alt.Scale(domain=domain, range=range_)   )
).interactive()
Run Code Online (Sandbox Code Playgroud)

python vega-lite altair

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