小编Dro*_*ror的帖子

无法从Jupyter中的Python笔记本导入模块

我有一个我开始使用的环境,Anaconda并且我成功地在其中安装了一个模块.我知道,因为我可以跑python,然后import tensorflow.这也适用于通过ipython.问题是,我无法从我开始使用的笔记本中加载模块ipython notebookjupyter(即使我从活动环境执行).

我怀疑它与设置有关,ipython但我不知道如何调试和解决问题.任何的想法?

编辑: 以下是我采取的步骤:

  1. conda create --name tensorflowproblem python=2.7 创造一个环境
  2. source activate tensorflowproblem
  3. conda install --name tensorflowproblem jupyter 安装jupyter
  4. pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl 安装 tensorflow

的位置pipjupyter:

$ which -a pip
/Users/dror/anaconda/envs/tensorflowproblem/bin/pip
$ which -a jupyter
/Users/dror/anaconda/envs/tensorflowproblem/bin/jupyter
Run Code Online (Sandbox Code Playgroud)

请注意该目录~/anaconda/envs/tensorflowproblem/lib/python2.7/site-packages/tensorflow存在.

此外,既python -c "import tensorflow"不会ipython -c "import tensorflow"产生任何错误.

按要求,也是出局

$ conda list -n tensorflowproblem
# packages in environment at …
Run Code Online (Sandbox Code Playgroud)

python ipython-notebook anaconda jupyter

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

从包中加载mathematica包

我或多或少有以下设置.在~/path/to/my/packages我有两个包package1.mpackage2.m.例如,每个包的大纲如下:

BeginPackage["package1`"]
Unprotect@@Names["package1`*"];
ClearAll@@Names["package1`*"];

Begin["`Private`"]

vecNorm[vec_?VectorQ]:=Module[{},Return[Sqrt[vec.vec]]];

End[]
Protect@@Names["package1`*"];
EndPackage[]
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是我想使用vecNormin package1.min中定义的package2.m.如何package1从内部加载(安全)package2

目前,我手动加载两个包,如下所示:

SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
Run Code Online (Sandbox Code Playgroud)

从保存的笔记本中~/path/to/my.我想手动加载只有 package2这反过来将会自动,安全地加载package1.一般来说,我想要一个尽可能少地改变mathematica路径等的解决方案.实现这一目标的最佳做法是什么?

PS:安全地我的意思是,在将来,当我定义package3哪些也将使用vecNorm并且将加载时package1,不会发生冲突.

wolfram-mathematica mathematical-packages

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

更改后更新(重新加载)mathematica包

我正在尝试找到以下循环的快捷方式.在开发mathematica的软件包时,一个是对.m文件代码进行更改,然后想要测试另一个笔记本中的更改.这是一个无限循环......

所以,我们有一个包package.m和一个test_package.nb测试完成的笔记本.目前,当我在.m文件中更改某些内容时,我必须:

Quit[]
Needs["package`"]
Run Code Online (Sandbox Code Playgroud)

在笔记本中为变化而变得可用,所以我可以测试它们.似乎没有Quit[]它不起作用.

是否有更短的方法来迭代这个开发循环?特别是避免戒烟?

后果

如果可以,我会接受ruebenko和Leonid的答案,因为两者都有帮助并解决了我的问题.然而,由于只有一个答案可以选择,我挑ruebenko的,由于是简单和容易-只需更改NeedsGet我克服了我的问题.尽管如此,Leonid的包装确实更加复杂,并且可能在一天结束时产生更好的结果,但它必须安装,装载等.

wolfram-mathematica

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

magit:如何在同一分支上的两个不同提交之间区分同一个文件?

如何使用相同文件的两个提交之间的差异magit

直接形成git一个可以做到这一点.但我不知道如何从内部做到这一点magit.从magit-status它看起来dD返回整个存储库的差异.这对我来说是非常有问题的,因为存储库很大并且导致magit(并且反过来emacs)变得没有响应.有没有办法要求magit将搜索限制为只从存储库中的一个文件?

我也尝试过,在magit-status缓冲区里做: diff $start_commit..$end_commit -- path/to/file.这是有效的,但输出是一个简单的缓冲区,没有任何突出显示,也没有任何折叠选项......

git emacs magit

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

使用mathematica中的实际函数

通常,mathematica总是假定最常见的情况,即,如果我设置了一个函数

a[s_]:={a1[s],a2[s],a3[s]}
Run Code Online (Sandbox Code Playgroud)

并且想要计算它的标准Norm[a[s]],例如,它将返回:

Sqrt[Abs[a1[s]]^2 + Abs[a2[s]]^2 + Abs[a3[s]]^2]
Run Code Online (Sandbox Code Playgroud)

但是,如果我知道一切ai[s]都是真的,我可以调用:

Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[a[s]]]]
Run Code Online (Sandbox Code Playgroud)

将返回:

Sqrt[a1[s]^2 + a2[s]^2 + a3[s]^2]
Run Code Online (Sandbox Code Playgroud)

这是我的期望.

例如,尝试派生a[s]然后(注意D)时会出现问题:

Assuming[{a1[s], a2[s], a3[s]} \[Element] Reals, Simplify[Norm[D[a[s],s]]]]
Run Code Online (Sandbox Code Playgroud)

再次返回一个涉及绝对值的结果 - 来自假设数字可能是虚数.

克服这个问题的方法是什么?我想定义一个实值函数,并使用它.也就是说,例如,我希望它的衍生物是真实的.

wolfram-mathematica

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

组织模式中的粗体标记区域

有没有办法org-mode标记区域(一个或几个单词)并使它们粗体/斜体?

目前,如果我想bar变成粗体,我必须在b添加之前移动点,然后在*之后导航点r并添加另一个*.我希望能够标记整个单词bar,点击类似的东西C-c C-f C-b(有人说过AUCTeX吗?)并获得*bar*.

emacs org-mode

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

在组织模式下对标题的混合列表进行排序

我有很多标题org-mode:

* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba
Run Code Online (Sandbox Code Playgroud)

我想按如下方式排序:

* Tasks [/]
** TODO Bar
** TODO Foo
** DONE Abba
** DONE World
Run Code Online (Sandbox Code Playgroud)

随着org-sort-entries我可以得到

* Tasks [/]
** DONE Abba
** TODO Bar
** TODO Foo
** DONE World
Run Code Online (Sandbox Code Playgroud)

(即字母顺序),或

* Tasks [/]
** TODO Foo
** TODO Bar
** DONE World
** DONE Abba
Run Code Online (Sandbox Code Playgroud)

(即根据状态分组).

换句话说,我想按字母顺序TODODONE项目和项目进行排序,但将它们保存在两个块中.我怎么能实现它?我想将整个标题集保存在同一个子树中!

编辑:

我没有设法利用下面的建议.因此,我尝试使用下面提供的提示来提出我需要的解决方案.这是我的代码:

(defun drorata-sort-TODO-DONE-headings ()
  (interactive) …
Run Code Online (Sandbox Code Playgroud)

emacs org-mode

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

使用elasticsearch-py记录

我想记录我python使用的脚本elasticsearch-py.特别是,我想要三个日志:

  1. 常规日志:记录INFO和上面stdout的文件和文件.
  2. ES日志:仅ES与文件相关的消息.
  3. ES跟踪日志:扩展ES日志记录(例如,卷曲查询及其输出)仅限于文件.

这是我到目前为止:

import logging
import logging.handlers

es_logger = logging.getLogger('elasticsearch')
es_logger.setLevel(logging.INFO)
es_logger_handler=logging.handlers.RotatingFileHandler('top-camps-base.log',
                                                          maxBytes=0.5*10**9,
                                                          backupCount=3)
es_logger.addHandler(es_logger_handler)

es_tracer = logging.getLogger('elasticsearch.trace')
es_tracer.setLevel(logging.DEBUG)
es_tracer_handler=logging.handlers.RotatingFileHandler('top-camps-full.log',
                                                       maxBytes=0.5*10**9,
                                                       backupCount=3)
es_tracer.addHandler(es_tracer_handler)

logger = logging.getLogger('mainLog')
logger.setLevel(logging.DEBUG)
# create file handler
fileHandler = logging.handlers.RotatingFileHandler('top-camps.log',
                                                   maxBytes=10**6,
                                                   backupCount=3)
fileHandler.setLevel(logging.INFO)
# create console handler
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
# add …
Run Code Online (Sandbox Code Playgroud)

python logging elasticsearch

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

形状与len为numpy数组

是否有差异(在例如性能)进行比较时,shapelen?请考虑以下示例:

In [1]: import numpy as np

In [2]: a = np.array([1,2,3,4])

In [3]: a.shape
Out[3]: (4,)

In [4]: len(a)
Out[4]: 4
Run Code Online (Sandbox Code Playgroud)

快速运行时比较表明没有区别:

In [17]: a = np.random.randint(0,10000, size=1000000)

In [18]: %time a.shape
CPU times: user 6 µs, sys: 2 µs, total: 8 µs
Wall time: 13.1 µs
Out[18]: (1000000,)

In [19]: %time len(a)
CPU times: user 5 µs, sys: 1 µs, total: 6 µs
Wall time: 9.06 µs
Out[19]: 1000000
Run Code Online (Sandbox Code Playgroud)

那么,有什么不同,哪一个更pythonic?(我想用shape).

python numpy

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

DataFrame列中混合的元素类型

考虑以下三个DataFrame:

df1 = pd.DataFrame([[1,2],[4,3]])
df2 = pd.DataFrame([[1,.2],[4,3]])
df3 = pd.DataFrame([[1,'a'],[4,3]])
Run Code Online (Sandbox Code Playgroud)

以下是第二列的类型DataFrame:

In [56]: map(type,df1[1])
Out[56]: [numpy.int64, numpy.int64]

In [57]: map(type,df2[1])
Out[57]: [numpy.float64, numpy.float64]

In [58]: map(type,df3[1])
Out[58]: [str, int]
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,所有int的都是铸造的numpy.int64.精细.在第三种情况下,基本上没有铸造.但是,在第二种情况下,整数(3)被转换为numpy.float64; 可能因为其他数字是浮点数.

我怎样才能控制铸件?在第二种情况下,我希望有[float64, int64][float, int]作为类型.

解决方法:

使用可调用打印功能可以有一个替代方案来显示在这里.

def printFloat(x):
    if np.modf(x)[0] == 0:
        return str(int(x))
    else:
        return str(x)
pd.options.display.float_format = printFloat
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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