我是一个蟒蛇新手,所以也许我的问题非常棒.假设我有一个单词列表,我想找到每个单词出现在该列表中的次数.明显的做法是:
words = "apple banana apple strawberry banana lemon"
uniques = set(words.split())
freqs = [(item, words.split().count(item)) for item in uniques]
print(freqs)
Run Code Online (Sandbox Code Playgroud)
但是我发现这个代码不是很好,因为这种方式程序运行两次单词列表,一次构建集合,第二次计算出现次数.当然,我可以编写一个函数来运行列表并进行计数,但这不会那么pythonic.那么,有更高效和pythonic的方式吗?
为什么quicksort(或introsort)或任何基于比较的排序算法比radix-sort更常见?特别是对于数字排序.
基数排序不是基于比较的,因此可能比O(n logn)更快.实际上,它是O(k n),其中k是用于表示每个项目的位数.并且内存开销并不重要,因为您可以选择要使用的桶数,并且所需的内存可能小于mergesort的要求.
它与缓存有关吗?或者可能访问数组中的随机字节整数?
我在使用cvProjectPoints2函数时遇到了一些麻烦.以下是O'Reilly的"Learning OpenCV"一书的功能概述:
Run Code Online (Sandbox Code Playgroud)void cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector, const CvMat* translation_vector, const CvMat* intrinsic_matrix, const CvMat* distortion_coeffs, CvMat* image_points, );
第一个参数
object_points
是你想要投射的点数列表; 它只是一个包含点位置的N×3矩阵.您可以在对象自己的局部坐标系中给出这些,然后提供3×1矩阵rotation_vector
*并将translation_vector
两个坐标相关联.如果在您的特定环境中直接在摄像机坐标中工作更容易,那么您可以object_points
在该系统中放入并设置两者rotation_vector
并translation_vector
包含0.†的
intrinsic_matrix
和distortion_coeffs
仅仅是相机固有信息和来自cvCalibrateCamera2()中第11章所讨论的失真系数image_points
的参数是N×2矩阵到其中的运算结果将被写入.
首先,object_points
数组似乎存在错误.如果只有一个点,即N = 1,则程序崩溃.无论如何,我有几个相机内部参数和投影矩阵.失真系数为0,即没有失真.为简单起见,假设我有2个摄像头:
double intrinsic[2][3][3] = {
//camera 0
1884.190000, 0, 513.700000,
0.0, 1887.490000, 395.609000,
0.0, 0.0, 1.0,
//camera 4
1877.360000, 0.415492, 579.467000,
0.0, 1882.430000, 409.612000,
0.0, 0.0, 1.0
};
double projection[2][3][4] = {
//camera …
Run Code Online (Sandbox Code Playgroud)