我想知道是否有任何自动方法来确定(至少大致)给定函数的Big-O时间复杂度?
如果我绘制O(n)函数与O(n lg n)函数,我想我能够在视觉上确定哪个是哪个; 我认为必须有一些启发式解决方案,可以自动完成.
有任何想法吗?
编辑:我很高兴找到一个半自动化的解决方案,只是想知道是否有某种方法可以避免进行全手动分析.
这可能是一个愚蠢的问题,但我想计算一个算法的复杂性,我不确定memmove()函数要考虑的复杂性.
你能帮忙/解释一下吗?
void * memmove ( void * destination, const void * source, size_t num );
Run Code Online (Sandbox Code Playgroud)
复杂度O(num)或O(1)也是如此.我想这是O(num),但我不确定我现在缺乏对引擎盖下发生的事情的理解.
在更改 pandas 数据帧的列顺序时,给出了几种技术。
df = df[['d', 'c', 'b', 'a']]
给出的重新排列的列 或者
DataFrame.reindex(columns=neworderlist)
给出的调用问题是这些列出的技术是否在内部创建数据帧的副本?是否有任何一种技术优于另一种技术?pandas索引文档中给出了模糊的参考,这不鼓励链式分配。这种“SettingWithCopy”行为也出现在这里吗?
所有的研究,我做点使用loc
的方式,通过一个山坳(S)值(S)来过滤数据帧,今天我读这个,我发现了我所测试的例子,那loc
是不是是不是真的需要的时候按其值过滤cols:
例如:
df = pd.DataFrame(np.arange(0, 20, 0.5).reshape(8, 5), columns=['a', 'b', 'c', 'd', 'e'])
df.loc[df['a'] >= 15]
a b c d e
6 15.0 15.5 16.0 16.5 17.0
7 17.5 18.0 18.5 19.0 19.5
df[df['a'] >= 15]
a b c d e
6 15.0 15.5 16.0 16.5 17.0
7 17.5 18.0 18.5 19.0 19.5
Run Code Online (Sandbox Code Playgroud)
注意:我确实知道是通过索引和位置来执行loc
或iloc
返回行。我没有基于此功能进行比较。
但是,在过滤时,执行“ where
”子句使用或不使用之间有什么区别loc
?如果有的话。为什么我遇到的有关该主题的所有示例都使用loc
?
我想把一个索引为'length'的列,并将其作为我的第二列.它目前作为第5列存在.我试过了:
colnames = big_df.columns.tolist()
# make index "length" the second column in the big_df
colnames = colnames[0] + colnames[4] + colnames[:-1]
big_df = big_df[colnames]
Run Code Online (Sandbox Code Playgroud)
我看到以下错误:
TypeError:必须是str,而不是list
我不确定如何解释这个错误,因为它实际上应该是一个list
,对吧?
另外,是否有通用方法将任何列按标签移动到指定位置?我的列只有一个级别,即没有MultiIndex
涉及.