小编Aen*_*aon的帖子

模块导入和Python中的__init__.py

我试图了解Python(v2.7)导入机制的最佳实践.我有一个项目已经开始增长一点,让我说我的代码组织如下:

foo/
    __init__.py
    Foo.py
    module1.py
    module2.py
    module3.py
Run Code Online (Sandbox Code Playgroud)

软件包名称foo位于其下面,我有Foo.py一个包含该类代码的模块Foo.因此,我使用相同的名称作为包,模块和类,这可能不是很聪明的开始.

__init__.py是空的,类Foo需要导入,module1, module2 and module3因此我的Foo.py文件的一部分看起来像:

# foo/Foo.py

import module1
import module2
import module3

class Foo(object):
    def __init__(self):
....
....
if __name__ == '__main__':
    foo_obj = Foo()
Run Code Online (Sandbox Code Playgroud)

但是后来我重新考虑了这一点,我认为在__init__.py文件中包含所有导入会更好.因此,我__init__.py现在看起来像:

# foo/__init__.py

import Foo
import module1
import module2
import module3
....
....
Run Code Online (Sandbox Code Playgroud)

我Foo.py唯一需要导入foo:

# foo/Foo.py

import foo
Run Code Online (Sandbox Code Playgroud)

虽然这看起来很方便,因为它是一个班轮,我有点担心它可能会创建循环导入.我的意思是,当脚本Foo.py运行时,它将导入它可以的所有内容,然后__init__.py将被调用,它将Foo.py再次导入(这是正确的吗?).另外,对于包,模块和类使用相同的名称会使事情更加混乱.

这样做是否有意义?还是我在找麻烦?

python import python-2.7

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

Pandas Dataframe:用行平均值替换NaN

我正在努力学习大熊猫,但我对以下内容感到困惑.我想替换NaNs是一个具有行平均值的数据帧.因此,类似的东西df.fillna(df.mean(axis=1))应该工作,但由于某种原因,它失败了.我错过了什么,我做错了什么?是因为它没有实施; 看到这里的链接

import pandas as pd
import numpy as np
?
pd.__version__
Out[44]:
'0.15.2'

In [45]:
df = pd.DataFrame()
df['c1'] = [1, 2, 3]
df['c2'] = [4, 5, 6]
df['c3'] = [7, np.nan, 9]
df

Out[45]:
    c1  c2  c3
0   1   4   7
1   2   5   NaN
2   3   6   9

In [46]:  
df.fillna(df.mean(axis=1)) 

Out[46]:
    c1  c2  c3
0   1   4   7
1   2   5   NaN
2   3   6   9
Run Code Online (Sandbox Code Playgroud)

但是这样的事情看起来很好

df.fillna(df.mean(axis=0)) 

Out[47]:
    c1  c2  c3
0 …
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe pandas

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

在Python中从__init__调用一个setter

如何从内部调用Python(v2.7)setter属性__init__?我写了下面的课,但我不知道如何更改它以使其工作.我得到一个AttributeError: 'test' object has no attribute '_x'例外.这里有一些类似的问题但到目前为止找不到答案.这个想法是调用初始化程序进行一些处理/切片并将结果分配给属性

class test(object):
    def __init__(self, a,b):
        self._x = self.x(a,b)

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, a, b):
        self._x = "Get this from {} and make a dataframe like {}".format(a,b)
Run Code Online (Sandbox Code Playgroud)

python properties

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

Anaconda python:尝试回滚修订版时出现PackagesNotFoundError错误

出于某种原因,我决定升级setuptools. 我跑的时候弹出的所谓打包方案conda install -c anaconda setuptools如下:

The following packages will be downloaded:

  package                    |            build
  ---------------------------|-----------------
  certifi-2019.3.9           |           py37_0         155 KB  anaconda
  pip-19.1.1                 |           py37_0         1.8 MB  anaconda
  python-3.7.2               |      h8c8aaf0_10        17.7 MB  anaconda
  setuptools-41.0.1          |           py37_0         680 KB  anaconda
  wheel-0.33.4               |           py37_0          57 KB  anaconda
  wincertstore-0.2           |           py37_0          13 KB  anaconda
  ------------------------------------------------------------
                                       Total:        20.4 MB

The following NEW packages will be INSTALLED:

   pip                anaconda/win-64::pip-19.1.1-py37_0

The following packages will be UPDATED:

  certifi     2018.11.29-py36_0 --> 2019.3.9-py37_0
  python …
Run Code Online (Sandbox Code Playgroud)

python python-3.x anaconda

9
推荐指数
2
解决办法
7751
查看次数

使用 libvips 重新缩放图像

我有一个图像,6130x5548 pixels我想重新缩放它,以便最长的一边是32768 pixels(然后做一个具有 7 个缩放级别的瓷砖金字塔)。我不明白vips resize是这样的事情的明显方式,因此我尝试了下面的行

vips resize image_in.tif img_rescaled.tif 5.345513866231648
Run Code Online (Sandbox Code Playgroud)

数字5.34551只是比率32768/6130,沿 my 的比例因子x axis。如果我想指定返回图像的像素的确切尺寸,我该怎么做?

我试图vips thumbnail用于此目的,我不知道是否推荐这样做,但它确实有效。

vips thumbnail image_in.tif img_rescaled.tif 32768
Run Code Online (Sandbox Code Playgroud)

请问这样可以吗?

此外,这两种方法在 MB 大小方面给出了完全不同的输出。虽然vips thumbnail产生了tif与尺寸2.8Gb的vips resize调用返回一个tif与大小1.8Gb。

这两个图像有(显然)相同尺寸32768x29657 pixels,相同的分辨率72dpi,但不同bit depth的tif距离 vips thumbnail有24 bit depth,而从一个vips resize 16 bit depth。原图有bit depth=16 …

image-processing vips

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

从批处理文件运行 git 命令时,“从 commit-graph.lock 重命名为 commit-graph 失败”

我已经编写了一个批处理文件来自动执行一系列git add/commit/push操作,但我收到了一条Rename from commit-graph.lock to commit-graph failed消息,请参阅附图。我的批处理文件有几个这样的 3 行代码片段,如下所示

git add 10\14*\*.csv 
git commit -m "updating files" 
git push origin master 

git add 10\15*\*.csv 
git commit -m "updating files"  
git push origin master 
Run Code Online (Sandbox Code Playgroud)

我认为y/n消息会随着git commit被调用而被丢弃(但我不确定)。回答 'y' 给了我同样的消息,而回答 'n' 看起来工作正常,提交被执行,文件被推到上游并且它移动到下一组命令,直到再次引发锁定..

我重新启动了电脑,并在没有打开任何其他程序(至少手动)的情况下运行了批处理文件,但无济于事。另外我认为没有另一个进程可以锁定文件。

请问有什么想法吗?

在此处输入图片说明

git github batch-file

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

卸载pandas(v 0.17)数据帧时的FutureWarning

我最近升级到pandas 0.17.0(numpy:1.10.1,Python:2.7.10),当我尝试使用unstack操作重塑数据帧时,我收到下面块中显示的警告.警告仅在第一次在新的ipython笔记本上运行代码时出现.在同一个笔记本上重新运行由于某种原因根本不会抛出任何消息(!!).类似的unstack存在于使用Pycharm编辑器编写的更大应用程序的代码中的某处.在这种情况下,每次运行应用程序时都会弹出警告.

unstack调用的结果看起来很好,它只是让我困惑的警告以及它是否是预期的行为.调用unstack时传递和参数也会阻止警告出现.

最后一点:我之前使用的是pandas 0.15.2,代码运行顺畅.

非常感谢

In [1]:

import pandas as pd
df = pd.DataFrame([['Maths', 'Student1', 20],['Physics', 'Student2', 21],['Chemistry', 'Student3', 22]], columns=('Subject','Name','Mark'))
df = df.set_index(['Subject','Name'])
df.unstack()

/Users/Name/anaconda/lib/python2.7/site-packages/pandas/core/index.py:
4281: FutureWarning: elementwise comparison failed; returning scalar instead,
but in the future will perform elementwise comparison
  return np.sum(name == np.asarray(self.names)) > 1


Out[1]:
           Mark
Name       Student1  Student2   Student3
Subject         
Chemistry  NaN       NaN        22
Maths      20        NaN        NaN
Physics    NaN       21         NaN
Run Code Online (Sandbox Code Playgroud)

python pandas

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

D3:慢速可缩放热图

我有这个可缩放的热图,放大或缩小时看起来太慢了。有没有什么可以让它更快/更流畅,或者它的积分太多了,这是我能拥有的最好的。我想知道是否有一些技巧可以让浏览器更轻,同时保持工具提示等增强功能。或者也许我的代码处理缩放功能不是很好。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <style>
        .axis text {
            font: 10px sans-serif;
        }

        .axis path,
        .axis line {
            fill: none;
            stroke: #000000;
        }

        .x.axis path {
            //display: none;
        }

        .chart rect {
            fill: steelblue;
        }

        .chart text {
            fill: white;
            font: 10px sans-serif;
            text-anchor: end;
        }
        
        #tooltip {
          position:absolute;
          background-color: #2B292E;
          color: white;
          font-family: sans-serif;
          font-size: 15px;
          pointer-events: none; /*dont trigger events on the tooltip*/
          padding: 15px 20px 10px 20px;
          text-align: center;
          opacity: 0;
          border-radius: 4px;
        } …
Run Code Online (Sandbox Code Playgroud)

javascript zooming d3.js d3heatmap

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

删除 git-lfs

请问如何完全删除/卸载 git-lfs?我git lfs uninstall这样做返回了以下两行:

Hooks for this repository have been removed
Global Git LFS configuration has been removed
Run Code Online (Sandbox Code Playgroud)

但该lfs文件夹仍在下方.git,当我执行git status文件进出该文件夹时(.git/lfs/tmp)。在我看来,它git-lfs可能还没有被删除。可执行文件也已从我的 windows10 机器中的uninstall or change a program窗口中卸载control panel。

git git-lfs

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

leaflet.js:使用自定义svg标记太慢了(还有很多要点)

我正在尝试使用一些用户定义的svg图标作为传单上的标记,但是我认为整个任务对于我的浏览器来说太繁重了。

到目前为止,我一直在使用,L.circleMarker但是现在我不得不使用星号,箭头,星星等标记,因此我决定将它们作为svg路径,然后将其插入而不是我的circleMarkers。为了使事情更复杂,我获得了超过30万的积分。使用circleMarkers,我可以制作一个可行的图表,虽然速度不快,但可以接受,尤其是当使用相当深的缩放来区分各个点时(否则,一切就像一个大斑点,没有用处)。

但是,使用svg标记时,图表的计算量变得很大,以至于浏览器只能挂起。我玩过100、1000和10000分,即使有1000分,差异也很明显。请问对此有什么解决方案,有人使用带有大量数据点的svg标记吗?我认为我的代码中正确使用了canvas,尤其是对于canvas,circleMarkers但我可能会误会。任何帮助,高度赞赏。摘录中的代码,对底部的几行进行注释/取消注释:

return L.circleMarker(p, style(feature));
Run Code Online (Sandbox Code Playgroud)

要么

console.log("Starting markers.")
return L.marker(p, {
    renderer: myRenderer,
    icon: makeIcon('6-pointed-star', style(feature).color),
    });
Run Code Online (Sandbox Code Playgroud)

从切换circleMarkers到svg标记。非常感谢!

PS。使用svg标记,代码会因Highlight事件而中断,但是我已经很了解发生了什么错误。circleMarkers

return L.circleMarker(p, style(feature));
Run Code Online (Sandbox Code Playgroud)

svg canvas d3.js leaflet mapbox

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

在带有 conda 的机器上安装 mamba

我不知道我是否错过了,但这对我来说并不清楚。我的机器上已经安装了 miniconda,现在我想安装 mamba。请问应该如何完成此操作,我应该下载/运行正确的 mambaforge 安装程序?它是否与 conda 愉快地共存,或者您的系统上应该只有其中一个。conda install mamba不建议做类似的事情

python conda mamba

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

jQuery 数据表的转换

当你绘制一个 jQuery 数据表时,你能不能有一个过渡效果,让它以一种平滑的方式而不是立即更新?

谢谢

jquery animation datatables

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

如何从非地理来源为传单制作平铺图像金字塔

假设我有一个非地理图像而不是通常的地图.让我们说例如X射线,MRI扫描或显微镜图像,我想使用传单,所以我可以放大,缩小并在一些预定点上放置一些标记.

我已经阅读了非地理地图中的示例,但是这个案例演示了使用一个单独的图像而不是平铺.我更喜欢瓷砖,因为我的图像会相当大.还有其他适合我上面描述的案例吗?我正在研究rastercoords但我还没有明确表示这是否适用于任何光栅文件只适用于普通地图.

javascript d3.js leaflet dc.leaflet.js

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