色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    瀏覽量

    11680
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84821
  • r語言
    +關注

    關注

    1

    文章

    30

    瀏覽量

    6301

原文標題:數據科學入門,先學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 ?2497次閱讀
    <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>的基本教程程序
    主站蜘蛛池模板: 亚洲欧美日韩国产另类电影| 99热这里只有精品| 二级特黄绝大片免费视频大片| 亲爱的妈妈6韩国电影免费观看| 成年人视频免费在线观看| 色婷婷国产麻豆AV| 国拍自产精品福利区| 综合色一色综合久久网vr| 全免费A敌肛交毛片免费懂色AV| 国产精品久久人妻无码网站一区无 | 国产精品免费观看视频| 亚洲三级在线观看| 男同志china免费视频| 人妻激情综合久久久久蜜桃| 国产成人精品视频| 真人美女精美小穴| 神马电影dy888午夜我不卡| 精品一产品大全| 厨房玩朋友娇妻中文字幕| 亚洲色综合狠狠综合区| 强开乳罩摸双乳吃奶视频| 吉吉影音先锋av资源| 亚洲性夜色噜噜噜网站2258KK| 免费国产在线观看| 国产午夜精品久久理论片小说| 538prom精品视频我们不只是| 偷拍 自怕 亚洲 在线| 老师掀开短裙让我挺进动态| 国产精品俺来也在线观看| 91久久精品一区二区三区| 乌克兰14一18处交见血| 美女穿丝袜被狂躁动态图| 国产日韩久久久精品影院首页 | 最新无码国产在线视频| 涩涩视频www在线观看入口| 伦 乱真实故事| 国产一区内射最近更新| 成年女人色毛片免费| 69日本人xxxx16—18| 亚洲免费国产| 久久秋霞理伦片|