Tag: 就地

如何删除多个文件的尾部空格?

是否有任何工具/ UNIX单一的内衬将在原地移除多个文件的尾随空白。 比如可以和find一起使用的一个。

更新java映射条目

我面临的问题似乎没有直接的解决办法。 我正在使用java.util.Map ,我想更新键值对中的值。 现在,我正在这样做: private Map<String,int> table = new HashMap<String,int>(); public void update(String key, int val) { if( !table.containsKey(key) ) return; Entry<String,int> entry; for( entry : table.entrySet() ) { if( entry.getKey().equals(key) ) { entry.setValue(val); break; } } } 那么是否有任何方法可以获得所需的Entry对象而无需遍历整个Map ? 还是有一些方法来更新条目的价值? Map一些方法如setValue(String key, int val) ? JRH

Python中a – = b和a = a – b之间的区别

我最近应用这个解决scheme来平均每N行matrix。 虽然解决scheme通常在应用于7x1arrays时遇到问题。 我注意到,问题是使用-=运算符。 举一个小例子: import numpy as np a = np.array([1,2,3]) b = np.copy(a) a[1:] -= a[:-1] b[1:] = b[1:] – b[:-1] print a print b 其输出: [1 1 2] [1 1 1] 所以,在数组的情况下, a -= b产生一个不同的结果比a = a – b 。 我直到现在才想到这两种方式是完全一样的。 有什么不同? 为什么总结matrix中的每个N行的方法,例如对于一个7×4的matrix,而不是对一个7×1的arrays来说呢?

如何将制表符转换为目录的每个文件中的空格?

我怎样才能将制表符转换为目录的每个文件中的空格(可能recursion)? 另外,有没有一种方法来设置每个标签的空格数?

就地基数sorting

这是一个长文本。 请多多包涵。 下来,问题是: 是否有一个可行的就地基数sortingalgorithm ? 初步 我有很多小的固定长度的string,只使用我想分类的字母“A”,“C”,“G”和“T”(是的,你猜对了)。 目前,我使用std::sort ,它在STL的所有常见实现中使用introsort 。 这工作得很好。 不过,我确信基数sorting完全适合我的问题,在实践中应该更好。 细节 我已经用非常幼稚的实现来testing这个假设,对于相对较小的input(大约为10,000),这是真实的(至less是两倍以上)。 但是,当问题规模变大( N > 5,000,000)时,运行时间会严重恶化。 原因很明显:基数sorting需要复制整个数据(实际上我的幼稚实现不止一次)。 这意味着我已经将〜4 GiB放入了我的主内存,这显然会导致性能下降。 即使没有,我也不能使用这么多的记忆,因为问题的规模实际上变得更大了。 用例 理想的情况下,这个algorithm应该适用于DNA和DNA5(它允许一个额外的通配符“N”),甚至是带有IUPAC 模糊代码的 DNA(导致16个不同的值)。 但是,我意识到所有这些情况都不能被覆盖,所以我对任何速度的改善感到满意。 代码可以dynamic地决定分派给哪个algorithm。 研究 不幸的是, 关于基数sorting的维基百科文章是无用的。 关于就地变体的部分是完整的垃圾。 基数sorting的NIST-DADS部分几乎不存在。 有一种看起来很有前途的论文,称为高效自适应就地基sorting ,它描述了“MSL”algorithm。 不幸的是,这篇论文也令人失望。 具体来说,有以下几点。 首先,该algorithm包含几个错误,并留下很多原因。 特别是,它没有详细说明recursion调用(我简单地假设它递增或减less一些指针来计算当前的移位和掩码值)。 而且,它使用函数dest_group和dest_address而不给定义。 我没有看到如何有效地实现这些(即在O(1);至lessdest_address是不平凡的)。 最后但并非最不重要的是,该algorithm通过将数组索引与input数组内的元素交换来实现就地性。 这显然只适用于数值数组。 我需要在string上使用它。 当然,我可以拧紧打字,然后继续前进,假设内存将容忍我存储一个不属于它的索引。 但是,只要我能把我的string压缩到32位内存(假设是32位整数),这个工作就行得通。 那只有16个字符(让我们暂且忽略16> log(5,000,000))。 其中一位作者的另一篇论文根本没有给出准确的描述,但是它使得MSL的运行时呈现出平坦的错误。 回顾一下 :有没有希望find一个工作的参考实现,或至less有一个良好的伪代码/描述工作在地方基数sorting的DNAstring?

Numpy修改数组的地方?

我有下面的代码,试图规范mxn数组的值(它将被用作neural network的input,其中m是训练样本的数量, n是特征的数量)。 但是,当我在脚本运行后检查解释器中的数组时,我发现这些值没有正常化; 也就是说,他们仍然具有原始的价值。 我想这是因为函数内部的arrayvariables赋值只能在函数内部看到。 我怎样才能做到这一点正常化? 或者我必须从规范化函数返回一个新的数组? import numpy def normalize(array, imin = -1, imax = 1): """I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)""" dmin = array.min() dmax = array.max() array = imin + (imax – imin)*(array – dmin)/(dmax – dmin) print array[0] def main(): array = numpy.loadtxt('test.csv', delimiter=',', skiprows=1) for column in array.T: normalize(column) return […]

大pandas:特殊的性能下降后,在dropna重新命名

我已经把这个报告为pandas问题的一个问题 。 同时我在这里张贴这个希望能节省时间,以防遇到类似的问题。 在分析一个需要优化的进程时,我发现重命名不在位的列会提高x120的性能(执行时间)。 分析表明这与垃圾收集有关(见下文)。 此外,通过避免使用dropna方法来恢复预期的性能。 下面的简短例子演示了一个因素x12: import pandas as pd import numpy as np 就地=真 %%timeit np.random.seed(0) r,c = (7,3) t = np.random.rand(r) df1 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t) indx = np.random.choice(range(r),r/3, replace=False) t[indx] = np.random.rand(len(indx)) df2 = pd.DataFrame(np.random.rand(r,c), columns=range(c), index=t) df = (df1-df2).dropna() ## inplace rename: df.rename(columns={col:'d{}'.format(col) for col in df.columns}, inplace=True) 100个循环,每个循环最好3:15.6 ms […]

删除包含特定string的文本文件中的行

我将如何使用sed删除包含特定string的文本文件中的整行?

如何使用合并sortingalgorithm就地sorting?

我知道这个问题不是太具体。 我想要的是有人告诉我如何将正常的合并sorting转换为就地合并sorting(或具有恒定额外空间开销的合并sorting)。 我能find的所有网页都是“太复杂”或“超出本文范围”的页面。 唯一已知的就地合并(没有任何额外的空间)的方法太复杂,不能简化为实际的程序。 ( 从这里拿) 即使它太复杂了, 如何进行合并sorting的基本概念是什么?