加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python,Numpy,Pandas…数据科学家必备排序技巧

发布时间:2019-09-12 06:24:37 所属栏目:教程 来源:读芯术
导读:副标题#e# 对数据进行分类整理是数据科学家和数据工程师的基础工作。Python会提供许多内置库,优化排序选项。有些库甚至可以同时在GPU上运行。令人惊奇的是,一些排序方法并没有使用之前所述的算法类型,其他方法的执行效果也不如预期。 选择使用哪种库和哪

为了详述你想要使用GPU,使用下面代码:

  1. with tf.device('/GPU:0'):  
  2. %time tf.sort(my_tf_tensor) 

使用 with tf.device('/CPU:0'):为了使用CPU。

假如在TensorFlow中工作,tf.sort()是非常直观的记忆和使用方法。只需记住direction = descending可转换排序顺序。

PyTorch

Python,Numpy,Pandas…数据科学家必备排序技巧

torch.sort(my_tensor)返回tensor排序副本。可选参数有:

  • dim:{int,optional} - 待排序维度
  • descending:{bool,optional} - 控制排序顺序(升序或降序)。
  • out:{tuple,optional} - (Tensor,LongTensor)的输出元组,可以作为输出缓冲区。

通过将.cuda()粘贴到张量的末尾来指定要使用GPU进行排序。

  1. gpu_tensor=my_pytorch_tensor.cuda()  
  2. %time torch.sort(gpu_tensor) 

一些分析表明,如果任何大于100万行乘以100,000列的数据集要排序,PyTorch将通过Thrust利用分段式并行排序。

不幸的是,当我们试图通过Google Colab中的Numpy创建1.1M x 100K随机数据点时,发现内存已不足。然后尝试了416 MB RAM的GCP,依旧没有内存。

分段排序和位置排序是mergesort的高性能体现,处理非均匀随机数据。分段排序使我们能够并行排序许多长度可变数组。 https://moderngpu.github.io/segsort.html

Thrust作为并行算法库,实现了GPU与多核CPU之间的联系。提供了排序原语,可自动选择最有效的执行方式。TensorFlow使用的CUB库会用来包装Thrust。PyTorch和TensorFlow在操作时GPU分类法相似 - 无论选择何种。

与TensorFlow一样,PyTorch的排序方法记起来相当容易:torch.sort()。唯一费脑子的是排序值的方向:TensorFlow使用direction,而PyTorch使用descending。

虽然用GPU进行排序对于非常大的数据集来说可能是一个很好的选择,但直接在SQL中对数据进行排序也是可以的。

SQL

SQL中的排序通常非常快,特别是在内存中执行时。

SQL很规范,但没有规定某操作必须使用哪种排序算法。Postgres使用磁盘合并排序,堆排序或快速排序,视情况而定。如果内存够,在内存中排序会更快。通过work_mem设置增加排序的可用内存。

其他SQL的执行使用不同排序算法。例如,根据Stack Overflow的回答,谷歌BigQuery的内省排序采取了一些措施。

SQL中的排序由ORDER BY命令执行。这种句法不同于所有使用单词sort的Python排序执行。其实更容易记住SQR语句与ODER BY,因为非常独特。

为使排序降序,请用关键字DESC。因此,按字母顺序从最后一个到第一个反馈给客户的查询如下所示:

  • SELECT Names FROM Customers
  • ORDER BY Names DESC;

比较

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读