小编Col*_* Ji的帖子

在R中,"存在的一切都是对象"的真正含义是什么?

我看见:

"为了理解R中的计算,两个口号是有帮助的:

•存在的一切都是一个对象.
•发生的一切都是函数调用."

- 约翰钱伯斯

但我刚刚发现:

a <- 2
is.object(a)
# FALSE
Run Code Online (Sandbox Code Playgroud)

实际上,如果变量是纯基类型,那么结果是.object()将为FALSE.所以它不应该是一个对象.

那么R中"存在的一切是一个对象"的真正含义是什么?

r

22
推荐指数
3
解决办法
1921
查看次数

在Racket中有没有像'try'这样的功能

现在,我正在通过查看The Seasoned Schemer这本书来吸取阴谋家.我通过球拍编写代码,但是当我使用时try,计划器没有这个方法或宏.它报告扩展:模块中的未绑定标识符:try.代码如下:(在第89页)

(define (remove-member-first* a lat)
   (try oh (rm a lat oh) lat))
Run Code Online (Sandbox Code Playgroud)

我搜索了球拍文件,但没有找到熟悉的功能.

那么谁知道是否有类似'尝试'的功能呢?

scheme racket seasoned-schemer

6
推荐指数
2
解决办法
551
查看次数

Python 中等效的“nth_element”函数是什么?

我想在python中实现Vantage Point Tree,但它在C++中使用std::nth_element。

所以我想在 Python 或 numpy 中找到等效的“nth_element”函数。

请注意,第 nth_element 只会对数组进行部分排序,并且它是 O(N)。

int the_array[10] = {4,5,7,3,6,0,1,2,9,8};
std::vector<int> the_v(the_array,the_array+10);
std::nth_element (the_v.begin()+0, the_v.begin()+5, the_v.begin()+10);
Run Code Online (Sandbox Code Playgroud)

现在向量可能是:

3,0,2,1,4,5,6,7,9,8
Run Code Online (Sandbox Code Playgroud)

而且我不仅想得到第 n 个元素,还想得到重新排列列表的两个部分,[3,0,2,1,4] 和 [6,7,9,8]。

此外,nth_element 支持接受一个可以比较两个元素的函数,例如,在下面,向量是一个向量 op DataPoint,DistanceComparator 函数将使用 the_v.begin() 比较两个点的距离:

vector<DataPoint> the_v;
for(int n = 0; n < N; n++) the_v[n] = DataPoint(D, n, X + n * D);
std::nth_element (the_v.begin()+0, the_v.begin()+5, the_v.begin()+10,
    DistanceComparator(the_v.begin()));
Run Code Online (Sandbox Code Playgroud)

编辑:

我使用了 bhuvan-venkatesh 的答案,并编写了一些代码进行测试。

partition_timer = timeit.Timer("numpy.partition(a, 10000)",
    "import numpy;numpy.random.seed(2);"+
    "a = numpy.random.rand(10000000)")
print(partition_timer.timeit(10))

sort_timer = timeit.Timer("numpy.sort(a)",
    "import numpy;numpy.random.seed(2);"+
    "a …
Run Code Online (Sandbox Code Playgroud)

c++ python nth-element

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

标签 统计

c++ ×1

nth-element ×1

python ×1

r ×1

racket ×1

scheme ×1

seasoned-schemer ×1