一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

R和Python,哪個(gè)對(duì)數(shù)據(jù)科學(xué)初學(xué)者更友好?

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-09-28 08:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編者按:數(shù)據(jù)科學(xué)家Alan Marazzi這篇討論R和Python哪個(gè)對(duì)數(shù)據(jù)科學(xué)初學(xué)者更友好的文章有些偏向R語(yǔ)言,結(jié)論僅供參考。不過(guò),它出色地展示了R語(yǔ)言在數(shù)據(jù)問(wèn)題上犀利的表達(dá)力。對(duì)初學(xué)者而言,從高層抽象(由R語(yǔ)言中的原生結(jié)構(gòu)或Numpy之類(lèi)的Python第三方庫(kù)提供)入手也確實(shí)更加便利。

這不是你通常在網(wǎng)上看到的那類(lèi)爭(zhēng)論R和Python哪個(gè)好的帖子。事實(shí)上,我根本不想討論到底哪個(gè)好。我只想說(shuō)明,想要入門(mén)數(shù)據(jù)科學(xué)的學(xué)習(xí)者,從R開(kāi)始更合適。

向量

什么是向量?如果你知道矩陣,那你就知道向量。向量可以看成矩陣的行或列,也就是由數(shù)字組成的一維“列表”。通常向量用作數(shù)據(jù)表的列,因?yàn)槲覀兇_信同一列內(nèi)的數(shù)據(jù)類(lèi)型相同。

浮點(diǎn)數(shù)、整數(shù)、字符串、類(lèi)別,等等,向量中的元素總是屬于同一類(lèi)型。這很重要,因?yàn)槲覀兛梢岳眠@一點(diǎn)加速和簡(jiǎn)化代碼:解釋器只需檢查第一項(xiàng)記錄的類(lèi)型。你也許已經(jīng)知道,向量是R的原生結(jié)構(gòu),事實(shí)上,R中標(biāo)量也是向量(一維向量)。

vec <- c(5, 3, 4)

class(vec)

[1] "numeric"

class(3)

[1] "numeric"

向量化

進(jìn)行數(shù)據(jù)分析或機(jī)器學(xué)習(xí)時(shí),常常需要處理表格形式的數(shù)據(jù),或者,從更底層的角度來(lái)說(shuō),向量的序列。如果我想將向量中的每項(xiàng)記錄乘2,在R中我可以非常自然地做到這一點(diǎn):

vec * 2

[1] 1068

Python中,向量不是原生結(jié)構(gòu),不過(guò)我們可以使用列表存儲(chǔ)向量。所以讓我們?cè)赑ython 3中嘗試相同的操作(你需要操心到底用Python 2還是Python 3是另一個(gè)問(wèn)題):

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

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

搞什么……

在Python中要得到同樣的結(jié)果,你需要使用for循環(huán):

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

... num * 2

...

10

6

8

你可能需要把結(jié)果存儲(chǔ)到另一個(gè)列表中,所以你需要首先初始化一個(gè)空列表來(lái)存放結(jié)果,然后啟動(dòng)循環(huán),在每個(gè)迭代中添加結(jié)果:

>>> 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等第三方庫(kù)的情況下,用Python的列表理解表達(dá)要簡(jiǎn)潔許多:[i * 2 for i in [5, 3, 4]])

我想強(qiáng)調(diào)的是,這主要不是少打幾個(gè)字的問(wèn)題,而是形成“恰當(dāng)?shù)摹毙闹悄P偷膯?wèn)題。許多人抱怨R代碼很慢,99%是因?yàn)闆](méi)有向量化他們的代碼,而使用“Python風(fēng)格”的循環(huán)(隱式或顯式)。

隨機(jī)行走例子

我們將分別在R和Python中實(shí)現(xiàn)隨機(jī)行走,Python代碼取自《From Python to NumPy》一書(shū)。

讓我們從最基本的循環(huán)方式開(kāi)始:

>>> 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) # 附加結(jié)果至行走列表

... return walk

...

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

>>> from itertools import accumulate

>>> import random

>>> def random_walk_faster(n=1000):

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

... return list(accumulate(steps))

...

不過(guò),這還是沒(méi)有向量化。它不過(guò)是更高效的循環(huán)而已。要做到完全向量化,我們需要使用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語(yǔ)言:

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

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

結(jié)語(yǔ)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 向量
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    11875
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4826

    瀏覽量

    86518
  • r語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    30

    瀏覽量

    6494

原文標(biāo)題:數(shù)據(jù)科學(xué)入門(mén),先學(xué)R再學(xué)Python

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Visual Studio NET初學(xué)者教程

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

    初學(xué)者USB技術(shù)入門(mén)總結(jié)

    初涉學(xué)USB,初學(xué)者USB入門(mén)總結(jié) 一,概述現(xiàn)在很多的主控上都帶有USB的功能,但是對(duì)于初學(xué)者來(lái)說(shuō),這方面應(yīng)用還是比較棘手,因?yàn)閡sb的不但固件程序需要編
    發(fā)表于 04-22 16:57 ?877次閱讀

    初學(xué)者之路—硬件學(xué)習(xí)經(jīng)驗(yàn)

    初學(xué)者之路—硬件學(xué)習(xí)經(jīng)驗(yàn)一文是一位搞硬件的在校研究生寫(xiě)的,希望對(duì)那些初學(xué)者之路電腦網(wǎng)等處于迷茫的硬件初學(xué)者學(xué)習(xí)之路有所幫助!
    發(fā)表于 12-29 10:20 ?1.5w次閱讀

    電子初學(xué)者電路圖如何看

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

    從51初學(xué)者到電子工程師

    51初學(xué)者的學(xué)習(xí)指導(dǎo),對(duì)51初學(xué)者是個(gè)很好的入門(mén)教程,
    發(fā)表于 02-23 15:53 ?0次下載

    protel99初學(xué)者教程

    protel99初學(xué)者教程
    發(fā)表于 12-11 22:52 ?0次下載

    初學(xué)者的avr基礎(chǔ)教程

    初學(xué)者的avr基礎(chǔ)教程
    發(fā)表于 09-21 08:45 ?14次下載

    PSOC1初學(xué)者5個(gè)實(shí)驗(yàn),針對(duì)初學(xué)者的實(shí)驗(yàn)

    PSOC1初學(xué)者5個(gè)實(shí)驗(yàn),針對(duì)初學(xué)者的實(shí)驗(yàn)
    發(fā)表于 10-16 09:33 ?14次下載
    PSOC1<b class='flag-5'>初學(xué)者</b>5個(gè)實(shí)驗(yàn),針對(duì)<b class='flag-5'>初學(xué)者</b>的實(shí)驗(yàn)

    linux初學(xué)者入門(mén)

    linux初學(xué)者入門(mén)
    發(fā)表于 10-27 14:34 ?14次下載
    linux<b class='flag-5'>初學(xué)者</b>入門(mén)

    R語(yǔ)言初學(xué)者指南 pdf下載

    R初學(xué)者指南
    發(fā)表于 02-26 09:35 ?13次下載

    初學(xué)者開(kāi)發(fā)人員都會(huì)犯的7個(gè)Python錯(cuò)誤

    這篇文章主要介紹了七個(gè)初學(xué)者常犯的Python調(diào)試錯(cuò)誤,并告訴大家如何去避免這些錯(cuò)誤。
    的頭像 發(fā)表于 06-23 15:19 ?2777次閱讀
    <b class='flag-5'>初學(xué)者</b>開(kāi)發(fā)人員都會(huì)犯的7個(gè)<b class='flag-5'>Python</b>錯(cuò)誤

    Labview初學(xué)者常見(jiàn)問(wèn)題及解答

    Labview初學(xué)者常見(jiàn)問(wèn)題及解答。
    發(fā)表于 05-25 15:56 ?20次下載

    FPGA初學(xué)者必讀文檔

    FPGA初學(xué)者必讀文檔(嵌入式開(kāi)發(fā)適合哪個(gè)城市)-FPGA初學(xué)者必讀文檔,為學(xué)習(xí)FPGA做好準(zhǔn)備。
    發(fā)表于 08-04 11:39 ?32次下載
    FPGA<b class='flag-5'>初學(xué)者</b>必讀文檔

    初學(xué)者的基本LED設(shè)置

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

    面向初學(xué)者的基本教程程序

    電子發(fā)燒友網(wǎng)站提供《面向初學(xué)者的基本教程程序.zip》資料免費(fèi)下載
    發(fā)表于 12-19 11:25 ?6次下載
    面向<b class='flag-5'>初學(xué)者</b>的基本教程程序