在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

R和Python,哪個對數據科學初學者更友好?

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-09-28 08:59 ? 次閱讀

編者按:數據科學家Alan Marazzi這篇討論R和Python哪個對數據科學初學者更友好的文章有些偏向R語言,結論僅供參考。不過,它出色地展示了R語言在數據問題上犀利的表達力。對初學者而言,從高層抽象(由R語言中的原生結構或Numpy之類的Python第三方庫提供)入手也確實更加便利。

這不是你通常在網上看到的那類爭論R和Python哪個好的帖子。事實上,我根本不想討論到底哪個好。我只想說明,想要入門數據科學的學習者,從R開始更合適。

向量

什么是向量?如果你知道矩陣,那你就知道向量。向量可以看成矩陣的行或列,也就是由數字組成的一維“列表”。通常向量用作數據表的列,因為我們確信同一列內的數據類型相同。

浮點數、整數、字符串、類別,等等,向量中的元素總是屬于同一類型。這很重要,因為我們可以利用這一點加速和簡化代碼:解釋器只需檢查第一項記錄的類型。你也許已經知道,向量是R的原生結構,事實上,R中標量也是向量(一維向量)。

vec <- c(5, 3, 4)

class(vec)

[1] "numeric"

class(3)

[1] "numeric"

向量化

進行數據分析或機器學習時,常常需要處理表格形式的數據,或者,從更底層的角度來說,向量的序列。如果我想將向量中的每項記錄乘2,在R中我可以非常自然地做到這一點:

vec * 2

[1] 1068

Python中,向量不是原生結構,不過我們可以使用列表存儲向量。所以讓我們在Python 3中嘗試相同的操作(你需要操心到底用Python 2還是Python 3是另一個問題):

>>> [5, 3, 4] * 2

[5, 3, 4, 5, 3, 4]

搞什么……

在Python中要得到同樣的結果,你需要使用for循環:

>>> for num in [5, 3, 4]:

... num * 2

...

10

6

8

你可能需要把結果存儲到另一個列表中,所以你需要首先初始化一個空列表來存放結果,然后啟動循環,在每個迭代中添加結果:

>>> res = []

>>> for num in [5, 3, 4]:

... res.append(num * 2)

...

>>> print(res)

[10, 6, 8]

在R中,你只需:

vec <- c(5, 3, 4) * 2

vec

[1] 1068

(譯者注:不考慮引入numpy等第三方庫的情況下,用Python的列表理解表達要簡潔許多:[i * 2 for i in [5, 3, 4]])

我想強調的是,這主要不是少打幾個字的問題,而是形成“恰當的”心智模型的問題。許多人抱怨R代碼很慢,99%是因為沒有向量化他們的代碼,而使用“Python風格”的循環(隱式或顯式)。

隨機行走例子

我們將分別在R和Python中實現隨機行走,Python代碼取自《From Python to NumPy》一書。

讓我們從最基本的循環方式開始:

>>> import random # 需要引入random模塊

>>> def random_walk(n):

... position = 0# 初始化位置變量

... walk = [position] # 初始化列表

... for i in range(n):

... position += 2*random.randint(0, 1)-1# 更新位置值

... walk.append(position) # 附加結果至行走列表

... return walk

...

如果對象非常大,上面的代碼會變得很慢,我們可以使用itertools模塊改善性能:

>>> from itertools import accumulate

>>> import random

>>> def random_walk_faster(n=1000):

... steps = random.sample([1, -1]*n, n)

... return list(accumulate(steps))

...

不過,這還是沒有向量化。它不過是更高效的循環而已。要做到完全向量化,我們需要使用NumPy:

>>> import numpy as np

>>> def random_walk_fastest(n=1000):

... steps = 2*np.random.randint(0, 2, size=n) - 1

... return np.cumsum(steps)

...

換成R語言:

rw <- cumsum(sample(c(-1, 1), 1000, TRUE))

無需引入什么模塊,無需額外定義什么函數或方法,一行搞定。(譯者注:Python確實需要引入NumPy,但其實也不用額外定義函數,np.cumsum(np.random.randint(...)))。

結語

如果你想從事和數據打交道的工作,或者想要教別人如何處理數據,可以從R開始。熟練使用R之后,再開始學Python比較好。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 向量
    +關注

    關注

    0

    文章

    55

    瀏覽量

    11679
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84787
  • r語言
    +關注

    關注

    1

    文章

    30

    瀏覽量

    6298

原文標題:數據科學入門,先學R再學Python

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Visual Studio NET初學者教程

    Visual Studio NET初學者教程
    發表于 01-08 11:15 ?74次下載
    Visual Studio NET<b class='flag-5'>初學者</b>教程

    初學者之路—硬件學習經驗

    初學者之路—硬件學習經驗一文是一位搞硬件的在校研究生寫的,希望對那些初學者之路電腦網等處于迷茫的硬件初學者學習之路有所幫助!
    發表于 12-29 10:20 ?1.5w次閱讀

    電子初學者電路圖如何看

    電子初學者的指南,介紹了好些東西,都是最基礎的。適合于初學者
    發表于 11-23 12:05 ?0次下載

    從51初學者到電子工程師

    51初學者的學習指導,對51初學者是個很好的入門教程,
    發表于 02-23 15:53 ?0次下載

    protel99初學者教程

    protel99初學者教程
    發表于 12-11 22:52 ?0次下載

    初學者的avr基礎教程

    初學者的avr基礎教程
    發表于 09-21 08:45 ?14次下載

    PSOC1初學者5個實驗,針對初學者的實驗

    PSOC1初學者5個實驗,針對初學者的實驗
    發表于 10-16 09:33 ?14次下載
    PSOC1<b class='flag-5'>初學者</b>5個實驗,針對<b class='flag-5'>初學者</b>的實驗

    RDS的詳細介紹,對初學者有用

    RDS的詳細介紹,對初學者有用
    發表于 10-24 11:29 ?14次下載
    RDS的詳細介紹,對<b class='flag-5'>初學者</b>有用

    linux初學者入門

    linux初學者入門
    發表于 10-27 14:34 ?14次下載
    linux<b class='flag-5'>初學者</b>入門

    R語言初學者指南 pdf下載

    R初學者指南
    發表于 02-26 09:35 ?13次下載

    初學者開發人員都會犯的7個Python錯誤

    這篇文章主要介紹了七個初學者常犯的Python調試錯誤,并告訴大家如何去避免這些錯誤。
    的頭像 發表于 06-23 15:19 ?2493次閱讀
    <b class='flag-5'>初學者</b>開發人員都會犯的7個<b class='flag-5'>Python</b>錯誤

    Labview初學者常見問題及解答

    Labview初學者常見問題及解答。
    發表于 05-25 15:56 ?20次下載

    FPGA初學者必讀文檔

    FPGA初學者必讀文檔(嵌入式開發適合哪個城市)-FPGA初學者必讀文檔,為學習FPGA做好準備。
    發表于 08-04 11:39 ?32次下載
    FPGA<b class='flag-5'>初學者</b>必讀文檔

    初學者的基本LED設置

    電子發燒友網站提供《初學者的基本LED設置.zip》資料免費下載
    發表于 11-22 10:14 ?3次下載
    <b class='flag-5'>初學者</b>的基本LED設置

    面向初學者的基本教程程序

    電子發燒友網站提供《面向初學者的基本教程程序.zip》資料免費下載
    發表于 12-19 11:25 ?6次下載
    面向<b class='flag-5'>初學者</b>的基本教程程序
    主站蜘蛛池模板: 天天操天天摸天天爽| 男女视频在线观看免费高清观看| 色老头网站久久网| 婷婷的五月| 色综合一区二区三区| 日韩h视频| 全色网站| 久久久久青草| 大色综合| 午夜美女久久久久爽久久| 天天爽天天干天天操| 天天操人人| 国产精品福利久久| 国产午夜视频在永久在线观看 | 日本理论片www视频| 免费在线色视频| 国产秦先生大战白丝97在线| vr性资源在线观看| 天天射夜夜爽| 成人5252色| 日本免费不卡视频一区二区三区| 在线看av的网址| 日本一卡二卡≡卡四卡精品 | 4338×亚洲全国最大色成网站| 亚洲天堂最新地址| 色多多入口| 狠狠色噜噜狠狠狠| 天天做天天爱夜夜爽女人爽宅 | 国产高清在线| 视频在线观看免费| 欧美三级黄色| 伊人久久大香线蕉综合电影| 日本免费www| 亚洲 欧美 精品专区 极品| 日韩免费在线视频| 国产卡一卡2卡三卡免费视频| 天天爽夜夜爽人人爽曰喷水| 97天天摸天天碰天天爽| 日本免费不卡一区| 色免费看| www.4虎|