典型地,一个运行jupyter notebook或jupyter-notebook或ipython notebook在终端局部地启动一个Jupyter笔记本网络服务器(和打开的浏览器中的URL)。使用conda
和conda 环境时,运行允许导入安装在 conda 环境中的 Python 模块的 Jupyter notebook 的最佳方法是什么?
因为它似乎,这 是 不是 很 直 向前 并 不少 用户 都有 类似的 烦恼。
最常见的错误信息似乎是:在康达环境中安装包后,XYZ
my-env一个可以运行import XYZ在开始一个python控制台my-env中,但在运行相同的代码Jupyter笔记本将导致一个ImportError。
这个问题已经问过很多次了,但是没有很好的地方来回答它,大多数问答和Github门票都很混乱,所以让我们在这里开始新的问答。
lstsq试图解决Ax=b最小化问题|b - Ax|.scipy和numpy都提供了一个linalg.lstsq具有非常相似的界面的功能.该文件没有提及使用哪种算法,既不scipy.linalg.lstsq也不对numpy.linalg.lstsq,但似乎做几乎相同.
对于scipy.linalg.lstsq和numpy.linalg.lstsq,实现似乎有所不同.两者似乎都使用LAPACK,两种算法似乎都使用了SVD.
区别在哪里?我应该使用哪一个?
注意:不要混淆linalg.lstsq与scipy.optimize.leastsq这也可以解决非线性优化问题.
在 pandas v.1.5.0 中,添加了一个新警告,当从不同 dtype 的数组设置列时会显示该警告。当使用 时,通知FutureWarning有关计划的语义更改iloc:更改将在未来版本中就地完成。变更日志指示如何获取旧行为,但没有提示如何处理这种情况,而就地操作实际上是正确的选择。
更改日志中的示例:
df = pd.DataFrame({'price': [11.1, 12.2]}, index=['book1', 'book2'])
original_prices = df['price']
new_prices = np.array([98, 99])
df.iloc[:, 0] = new_prices
df.iloc[:, 0]
Run Code Online (Sandbox Code Playgroud)
这是警告,在 pandas 1.5.0 中打印:
FutureWarning:在未来版本中,
df.iloc[:, i] = newvals将尝试就地设置值,而不是始终设置新数组。要保留旧行为,请使用或df[df.columns[i]] = newvals,如果列不唯一,df.isetitem(i, newvals)
如果我不关心是否就地,但想摆脱警告,如何摆脱警告?我应该明确更改 dtype 吗?我真的需要每次需要使用此功能时都收到警告吗?难道就没有更好的办法吗?
我ipdb.set_trace()在Python代码中使用了某个地方.是否可以使用IPDB命令忽略此断点?
clear告诉我它清除了所有断点,但IPDB在它遇到障碍时再次停止ipdb.set_trace().
disable 1告诉我:No breakpoint numbered 1
ignore 1说:Breakpoint index '1' is not valid
澄清一下:当然我可以简单地从源代码中删除断点.但这需要退出调试器并再次启动它.通常需要大量工作才能到达某个地方并重新启动调试器会使生活变得更加困难.此外,如果存在一个巨大的循环并且您想要在循环中检查对象,最简单的方法是在对象之后直接在循环中放置一个断点.然后我怎么能跳过循环(以及所有数千个调用set_trace())并在循环使用后逐步执行代码next?
在MATLAB中,有一个明确的功能可以删除所有当前变量.如果您开始全新的事情并且不希望与早期计算发生冲突,这非常有用.我现在正在为Mathematica搜索类似的东西,但除了Clear [VAR]之外我找不到任何东西,它只删除变量VAR.
如果将变量作为全局变量或本地变量传递给Python的函数eval(),为什么会有所不同?
正如文档中所描述的__builtins__,如果没有明确给出,Python将复制到全局变量.但也必须有一些我看不到的其他差异.
请考虑以下示例函数.它需要一个字符串code并返回一个函数对象.不允许内置(例如abs()),但math包中的所有功能.
def make_fn(code):
import math
ALLOWED_LOCALS = {v:getattr(math, v)
for v in filter(lambda x: not x.startswith('_'), dir(math))
}
return eval('lambda x: %s' % code, {'__builtins__': None}, ALLOWED_LOCALS)
Run Code Online (Sandbox Code Playgroud)
它按预期工作,不使用任何本地或全局对象:
fn = make_fn('x + 3')
fn(5) # outputs 8
Run Code Online (Sandbox Code Playgroud)
但它无法使用这些math功能:
fn = make_fn('cos(x)')
fn(5)
Run Code Online (Sandbox Code Playgroud)
这会输出以下异常:
<string> in <lambda>(x)
NameError: global name 'cos' is not defined
Run Code Online (Sandbox Code Playgroud)
但是当传递与globals相同的映射时,它可以工作:
def make_fn(code):
import math
ALLOWED = {v:getattr(math, v)
for …Run Code Online (Sandbox Code Playgroud) 想象一下以下场景:从IPython shell启动脚本,并在断点处调用python调试器.使用PDB命令,可以在此时分析代码和变量.但事实证明,变量的值需要进行更深入的研究.
是否可以将变量的值导出到IPython shell?
我的具体用例:我遇到了一个非常庞大的numpy数组,似乎没有正确的值.我知道我可以从python调试器运行任何python命令,但将变量的值保存在不同的断点并在IPython shell中使用所有这些命令会很有帮助.我想像这样的东西
ipdb> global var1; var1 = var
ipdb> continue
...
ipdb> global var2; var2 = var
ipdb> continue
...
In [2]: abs(var1 - var2) # do some interesting calculations with IPython
Run Code Online (Sandbox Code Playgroud) 该函数numpy.savez()允许将numpy对象存储在文件中.将同一对象存储在两个文件中会产生两个不同的文件:
import numpy as np
some_array = np.arange(42)
np.savez('/tmp/file1', some_array=some_array)
np.savez('/tmp/file2', some_array=some_array)
Run Code Online (Sandbox Code Playgroud)
这两个文件不同:
$ diff /tmp/file1.npz /tmp/file2.npz
Binary files /tmp/file1.npz and /tmp/file2.npz differ
Run Code Online (Sandbox Code Playgroud)
为什么文件不相同?是否包含一些随机行为,文件名或时间戳?这可以解决或修复吗?(这是一个错误?)
请注意,情况并非如此np.save().生成的文件np.save()对于相同的输入是相同的.所以我猜这与数据的压缩有关.
AFAICS只有两位不同:
$ xxd /tmp/file1.npz > /tmp/file1.hex
$ xxd /tmp/file2.npz > /tmp/file2.hex
$ diff -u0 /tmp/file1.hex /tmp/file2.hex
--- /tmp/file1.hex 2018-03-13 13:39:12.235897095 +0100
+++ /tmp/file2.hex 2018-03-13 13:39:08.743927081 +0100
@@ -1 +1 @@
-0000000: 504b 0304 1400 0000 0000 ce6c 6d4c 9c9d PK.........lmL..
+0000000: 504b 0304 1400 0000 0000 cf6c 6d4c 9c9d …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个PowerShell脚本来打开Internet Explorer,导航到https://clockify.me/login,填写电子邮件和密码输入并提交表单或单击登录按钮.
问题是,在使用以下方法填充输入时:
document.getElementById("email").value="123"document.getElementById("password").value="123"我有以下结果:
document.forms[0].submit(),网页重新加载网址https://clockify.me/login?email=&password=并且没有任何反应那么,有没有办法解决这个问题?使用纯粹的javascript或PowerShell(我希望保持IE窗口不可见)
谢谢!
下面这行代码在 Python 3 中起什么作用?
>>> from . import *
Run Code Online (Sandbox Code Playgroud)
它不输出任何内容,我在 Python 3.7.3 中看到的唯一变化如下:
>>> '__warningregistry__' in locals()
False
>>> from . import *
>>> '__warningregistry__' in locals()
True
>>> locals()['__warningregistry__']
{'version': 0}
Run Code Online (Sandbox Code Playgroud)
这可能是警告模块的一部分,表示在某处有一个未打印的警告,但文档仅提到了模块中的一个变量 。__warningregistry__warnings
该文档解释了如何from . import foo 工作以及如何from bar import * 工作,但我找不到任何有关from . import *. 人们可能期望所有名称都__init__.py加载到当前名称空间中(就像from bla import *一样bla.py),但情况似乎并非如此,而且在__name__ == '__main__'(脚本和终端)时也没有意义。
Python 2 的行为与我的预期更加相似:
>>> # Python 2.7.16
>>> from …Run Code Online (Sandbox Code Playgroud) 我喜欢做什么:我想在架构中指定一个选项标签,例如:
<xsd:element name="my_element" type="my_type" minOccurs="0" maxOccurs="1"/>
Run Code Online (Sandbox Code Playgroud)
如果元素根本不发生,则此参数应该有一个默认值.当然,我可以在我的代码中定义这个默认值,它调用XML解析器.但我认为指定默认值的正确位置将在*.xsd模式文件中(因为默认值是模式定义的接口的一部分).
不幸的是,这似乎并不容易."default"属性具有不同的效果:"如果它没有出现则不提供;如果它出现并且为空,则其值为默认值"(来自http://www.w3.org/TR)/xmlschema-0 /#ref36).
我发现讨论此问题的其他链接:
有这个问题的解决方案吗?或者我应该放弃?
我有一个double x[]长度为11 的数组和一个函数f(double x[]).我想f()通过离散化找到函数的最小值.所以对于给定的值,val1, val2, ..., valn我需要一个循环通过{val_1,...,val_n} ^ 11中的x的所有元组.我可以很容易地使用11个嵌套循环,但这真的是我能做的最有效吗?
编辑:
澄清事情:函数f()在11维集上定义.我想评估一个11维网格的顶点上的函数.对于网格的尺寸h,为所述阵列的条目可能值x[]可以是0,h,2*h,...,n*h= val_1,val_2,...,val_n.因此,在开始时f(val_1, val_1, ..., val_1)应该评估,然后f(val_1, val_1, ...,val_1, val_2),...和在和 f(val_n, val_n, ..., val_n).我实际上并不关心顺序,但我确实关心速度,因为有很多这样的元组.确切地说,有n ^ 11个这样的元组.因此,对于n = 10 f(),必须评估10 ^ 11次.我的计算机f()每秒可以评估大约5*10 ^ 6次,因此对于n = 10,评估f() 需要5个小时.这就是为什么我在寻找最有效的方法来实现它.
python ×8
numpy ×2
c ×1
clockify ×1
conda ×1
debugging ×1
eval ×1
ipdb ×1
javascript ×1
jupyter ×1
loops ×1
nested-loops ×1
pandas ×1
pdb ×1
powershell ×1
python-3.x ×1
scipy ×1
xml ×1
xsd ×1
zipfile ×1