小编Ome*_*erB的帖子

熊猫 - 就位=真正被认为有害或无效?

这已在前面讨论过,但答案相互矛盾:

我想知道的是:

  • 为什么是inplace = False默认行为?
  • 什么时候改变呢?(好吧,我被允许改变它,所以我猜这是有原因的).
  • 这是安全问题吗?也就是说,操作失败/行为失误是由于inplace = True
  • 我是否可以提前知道某项inplace = True操作是否"真正"就地进行?

我到目前为止:

  • 许多Pandas操作都有一个inplace参数,总是默认为False,意味着原始的DataFrame不受影响,并且操作返回一个新的DF.
  • 设置时inplace = True,操作可能适用于原始DF,但它可能仍在幕后复制,只需在完成后重新分配参考.

专业人士inplace = False:

  • 允许链接/功能语法:df.dropna().rename().sum()...这很好,并提供延迟评估或更有效的重新排序的机会(虽然我不认为Pandas正在这样做).
  • inplace = True在可能是底层DF的切片/视图的对象上使用时,Pandas必须进行SettingWithCopy检查,这是昂贵的.inplace = False避免这种情况.
  • 幕后一致且可预测的行为.

专业人士inplace = True:

  • 可以更快,更少内存占用(第一个链接显示reset_index()运行速度快两倍,并使用峰值内存的一半!).

因此,inplace = True除了专门编写链式语句之外,将copy-vs-view问题放在一边,总是使用它似乎更高效.但这不是默认的熊猫选择,所以我错过了什么?

python pandas

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

在IPython Notebook中关闭自动保存

我正在寻找一种方法来关闭iPython笔记本中的自动保存功能.我已经看到通过Google/Stack Overflow搜索引用如何打开自动保存,但我想要相反(关闭自动保存).如果这是可以永久设置而不是在每个笔记本的顶部,那将是优惠的.

python autosave jupyter-notebook

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

在python中模拟固定精度

对于数学分析的大学课程,我们正在从Maple过渡到Numpy和Sympy的组合,以获得课程材料的各种插图.这是因为学生们之前已经学习过Python.

我们遇到的困难之一是在Python中模拟固定精度.Maple允许用户指定小数精度(比如10或20位),然后在每次计算时都使用该精度,这样您就可以看到舍入误差的影响.在Python中,我们尝试了一些方法来实现这一点:

  • Sympy具有指定位数的舍入函数.
  • Mpmath支持自定义精度.

然而,这不是我们想要的.这些选项计算确切结果并将精确结果四舍五入到指定的位数.我们正在寻找一种能够以指定精度进行每次中间计算的解决方案.例如,可以显示分割两个非常小的数字时可能发生的舍入误差的东西.

到目前为止,最好的解决方案似乎是Numpy中的自定义数据类型.使用float16,float32和float64,我们至少能够指出可能出现的问题.这里的问题是我们总是需要使用一个元素的数组,并且我们仅限于这三种数据类型.

为了我们的目的,还有更灵活的东西吗?或者我们正在寻找隐藏在mpmath文档中某处的东西?当然,通过在舍入函数中包装计算的每个元素有一些变通方法,但这会使代码模糊到学生.

floating-point precision numpy fixed-point numerical-analysis

16
推荐指数
1
解决办法
310
查看次数

Pandas - 按行交错/压缩两个DataFrame

假设我有两个数据帧:

>> df1

   0  1  2
0  a  b  c
1  d  e  f

>> df2

   0  1  2
0  A  B  C
1  D  E  F
Run Code Online (Sandbox Code Playgroud)

如何交错行? 即得到这个:

>> interleaved_df

   0  1  2
0  a  b  c
1  A  B  C
2  d  e  f
3  D  E  F
Run Code Online (Sandbox Code Playgroud)

(注意我的真实DF具有相同的列,但行数不同).


我试过的

灵感来自这个问题(非常相似,但在提问):

import pandas as pd
from itertools import chain, zip_longest

df1 = pd.DataFrame([['a','b','c'], ['d','e','f']])  
df2 = pd.DataFrame([['A','B','C'], ['D','E','F']])

concat_df = pd.concat([df1,df2])

new_index …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Python webbrowser.open()-将new = 0设置为在同一浏览器窗口中打开不起作用

给出以下python代码:

import webbrowser
webbrowser.open("http://slashdot.org",new=0)
webbrowser.open("http://cnn.com",new=0)
Run Code Online (Sandbox Code Playgroud)

我希望打开浏览器,加载第一个网站,然后在同一窗口中加载第二个网站。但是,它会在新窗口(或新选项卡,取决于我使用的浏览器)中打开。

在装有Safari,Firefox和Chrome的Mac OSX上以及在Firefox的Ubuntue上进行过尝试。我倾向于认为new = 0不兑现。我只是想念什么吗?

tia,

python

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

不同类型的分支

所以我对分支的理解是有两种类型:

双向分支,根据存储在寄存器中的某些计算的结果进行分支。昂贵并导致管道冲洗。

单向分支,这就像一个函数指针或一个 goto,它将转到常量地址。如果我弄错了,请纠正我,但我认为这比两个分支便宜得多,因为现代处理器将在管道的早期解决这些指令。

我想象如果存在第三种类型的分支,循环展开会更快。通常,循环展开会增加指令大小,但会避免双向分支。如果您有一个分支,它同时支持指令大小和两个分支,该怎么办。就像一个分支,它会循环一段代码恒定的次数。

存在哪些类型的分支?

cpu x86 assembly processor

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