我试图了解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再次导入(这是正确的吗?).另外,对于包,模块和类使用相同的名称会使事情更加混乱.
这样做是否有意义?还是我在找麻烦?
我正在努力学习大熊猫,但我对以下内容感到困惑.我想替换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(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) 出于某种原因,我决定升级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) 我有一个图像,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 …
我已经编写了一个批处理文件来自动执行一系列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' 看起来工作正常,提交被执行,文件被推到上游并且它移动到下一组命令,直到再次引发锁定..
我重新启动了电脑,并在没有打开任何其他程序(至少手动)的情况下运行了批处理文件,但无济于事。另外我认为没有另一个进程可以锁定文件。
请问有什么想法吗?
我最近升级到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) 我有这个可缩放的热图,放大或缩小时看起来太慢了。有没有什么可以让它更快/更流畅,或者它的积分太多了,这是我能拥有的最好的。我想知道是否有一些技巧可以让浏览器更轻,同时保持工具提示等增强功能。或者也许我的代码处理缩放功能不是很好。
<!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)请问如何完全删除/卸载 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。
我正在尝试使用一些用户定义的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)
我不知道我是否错过了,但这对我来说并不清楚。我的机器上已经安装了 miniconda,现在我想安装 mamba。请问应该如何完成此操作,我应该下载/运行正确的 mambaforge 安装程序?它是否与 conda 愉快地共存,或者您的系统上应该只有其中一个。conda install mamba不建议做类似的事情
当你绘制一个 jQuery 数据表时,你能不能有一个过渡效果,让它以一种平滑的方式而不是立即更新?
谢谢
假设我有一个非地理图像而不是通常的地图.让我们说例如X射线,MRI扫描或显微镜图像,我想使用传单,所以我可以放大,缩小并在一些预定点上放置一些标记.
我已经阅读了非地理地图中的示例,但是这个案例演示了使用一个单独的图像而不是平铺.我更喜欢瓷砖,因为我的图像会相当大.还有其他适合我上面描述的案例吗?我正在研究rastercoords但我还没有明确表示这是否适用于任何光栅文件只适用于普通地图.
python ×6
d3.js ×3
git ×2
javascript ×2
leaflet ×2
pandas ×2
anaconda ×1
animation ×1
batch-file ×1
canvas ×1
conda ×1
d3heatmap ×1
dataframe ×1
datatables ×1
git-lfs ×1
github ×1
import ×1
jquery ×1
mamba ×1
mapbox ×1
missing-data ×1
properties ×1
python-2.7 ×1
python-3.x ×1
svg ×1
vips ×1
zooming ×1