相关疑难解决方法(0)

为什么在Haskell中将副作用建模为monad?

任何人都可以给出一些指针,说明为什么Haskell中的不纯计算被建模为monad?

我的意思是monad只是一个有4个操作的界面,那么建模副作用的原因是什么呢?

monads haskell functional-programming

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

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

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

我想知道的是:

  • 为什么是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
查看次数

标签 统计

functional-programming ×1

haskell ×1

monads ×1

pandas ×1

python ×1