導航:首頁 > 網路數據 > fortran大數據

fortran大數據

發布時間:2022-07-06 17:46:16

㈠ 學習經濟學需要熟悉哪些編程語言

學習經濟學需要熟悉哪些編程語言?

1)壇友arthur_2006
處理和分析數據都用得到,最基本的是excel,如果你的VBA用得好的話會有很大的幫助,如果你要分析數據的話,比如你要建模那麼SAS還是不錯的,不過比較難掌握如果你沒有語言方面的基礎,其他還有很多軟體也能做得到。很多銀行證券期貨企業都使用的是oracle或者DB2,一些小企業可能使用的是SQL, 所以如果想在這方面發展就要掌握資料庫的知識,畢竟金融和計算機兼備的人才還是稀缺的,而且國內很多行業都是用的是這幾大數據庫比如電信醫療航空等等,不會分析金融數據恐怕稱不上什麼金融專家吧,至於你分析得准還是不準那就要看你的金融知識掌握的程度啦,尤其是投資專業的學生學習一些這方面的知識是必要的,很多人是應用金融學專業的偏向於財務,那就去考考CFA,ACCA什麼的,也沒必要在這上面花費太多精力而且工作中很可能用不到的,金融數學金融工程精算專業的同學花點時間研究一下還是很有必要的,總而言之一句話,首先要看你的興趣再就是你的專業和發展方向。

2)編程愛好者任坤
做統計和計量的話,想要跟當今的國際學術界接軌,最好學R,至少我所知道的目前美國的統計學術界被R佔領的趨勢很明顯了。

如果只是做簡單地回歸隨便解讀一下,那隨便選個傻瓜軟體就可以了。如果只是應用現成的成熟的計量模型來做實證研究,那麼傻瓜軟體一般也就可以了。如果要以統計、計量為研究領域或者專業領域,那麼編程性的東西是少不了的,即使是做實證如果涉及較為復雜的數據結構,懂編程也能幫你大幅提高生產力。另外,R的社區比較活躍,能夠較好地跟上前沿。

如果涉及到處理較大的數據,一種辦法是用SAS,如果不想用SAS可以學資料庫方面的東西,比如把數據放在SQLite資料庫中然後用{RSQLite}訪問資料庫,或者用{sqldf}通過SQL操作環境中的data frame。

如果覺得執行某項任務R單核速度慢,那麼可以使用{parallel}或者{parallelMap}做並行計算,也可以利用雲計算來處理數據。

如果涉及到其他社區的東西在R社區中沒有實現,例如Java的東西,可以用{rJava}來調用Java的對象,不過速度有些慢。

比較好的辦法是我在想從事數據分析工作,學什麼軟體或語言最好? 提到的F#函數式編程語言,用RProvider可以直接調用R,用JavaProvider直接調用Jar打包的Java程序,用PythonProvider(即將發布)直接調用Python程序,等等,很容易將各大社區的資源整合在一起使用。

目前我在GitHub上面弄一個通過R學習統計、計量、非參、數據可視化、資料庫的repo: renkun-ken/learnR on GitHub ,雖然目前還沒什麼內容,不過可以跟蹤一下。

以上說得都是經濟學相關的統計和計量方面所需要的編程。事實上統計和計量所需的「編程」較為簡單,基本也就是處理數據、應用已經提供的計量模型,更多需要編程的是:一、如果涉及較為前沿的計量模型,可能還需要自己實現;二、一些蒙特卡羅模擬需要一些編程。

從經濟學相關的一些新型領域來說,計算經濟學(Computational Economics)、計算統計學(Computational Statistics)以及計算計量學(Computational Econometrics)則需要較強的編程能力,包括演算法實現、演算法分析等等。舉個例子,計算經濟學中目前做的一塊研究是Agent-based computational finance,就是建立一個模擬的金融市場,裡面有幾種資產,每種資產的基本面由隨機的紅利決定,裡面有許多遵循各種邏輯的投資者,投資者對於紅利發放持有的信念不同,因而從各自的邏輯觸發的交易行為不同。在一個復式競價(double auction)的交易市場中,什麼樣的投資者組成或者行為方式、什麼樣的記憶長短,能夠最大程度地復制出我們在現實金融市場中觀測到的資產價格或者資產收益率規律,例如資產收益率尖峰肥尾、不對稱性。此時,研究者就需要較扎實的金融知識來設計一個不過於簡單而又不過於復雜的模擬金融市場,也需要相應的編程能力把模型用程序語言編寫出來。這中間會設計許多編程技術,例如資料庫(有時要跟蹤許多變數,例如投資者現金流動、財富分布)、並行計算(CPU多核並行、多進程並行、集群上的並行甚至GPU計算)等等。這方面的研究從1990s年代才開始。

3)知乎網友Jichun Si
計量經濟學也有很多小的門類,請對號入座。有很多軟體,Stata, matlab, R, SAS是相對來說用的比較多的。

如果是做應用計量(特別是橫截面數據、面板數據),Stata是不二之選,因為不管是管理數據還是跑回歸,實在太太太方便了。現在主流期刊的應用微觀計量文章裡面能用到的模型stata幾乎都有,而且其中的絕大多數都是用stata做的。而且最大的優點是,簡單!

如果做應用的時間序列,Eviews似乎是一個不錯的選擇。但是我一般不做這方面,也不是很有發言權。

如果做理論計量,stata eviews是沒有現成的包的,而且即便Stata可以編程,可編程能力也是很差的,而且不穩健。所以懂R和Matlab就非常順手。當然也可以用Python,最近Sargent就寫了本用Python做計量的書。還有一個Julia,是這三種語言的混合,但是速度快很多,缺點是太過於小眾。

如果對速度要求高,特別是金融計量很多對速度有要求的,可以考慮C、Fortran等語言。C和Fortran肯定是最快的。還有一個叫做OX的,速度快,但是也很小眾。但是這些語言的缺點是學習難度比較高,開發時間比較慢。Julia據說速度堪比C,而且語法特別像Matlab、Python(意味著容易學習),但是處於剛起步階段,用的人太少了。

如果是金融計量領域,強烈建議學會SAS。SAS是最權威,速度也很快,當然最大的問題是昂貴,而且可編程能力不是多麼好。但是金融裡面數據量都非常非常非常大,一般的軟體都癱的時候,SAS就派上用場了。

像我自己,做應用的時候都是用stata整理數據,能用stata的堅決不用其他軟體。但是因為有的時候做一些理論計量的工作,所以matlab也是必不可少的。我也在學習Julia,因為matlab的速度實在太慢。Python我一般不用來做科學計算,用的人不多,而且速度慢,一般是用來抓數據的。

最後還是補充一點吧,為什麼我推薦matlab而不是其他的軟體,也是有道理的。很多模型,比如空間計量模型(spatial econometrics)、貝葉斯估計、以及宏觀計量裡面的DSGE model、SVAR等模型,在stata、Eviews裡面都是沒有什麼現成的東西可以用的,但是matlab提供了豐富的包,比如Dynare就是基於Matlab的,還有LeSage的空間計量軟體包等等,也是基於matlab的。所以幾乎你想用的模型matlab裡面都能找到codes然後直接用。就算沒有,你自己在matlab裡面寫,也不是什麼難事。

最後想起一句話來,關於這些軟體的選擇(stata除外,因為stata在應用計量領域的地位是幾乎不可替代的)可以用兩句話來概括:如果你自己的時間比計算機的時間寶貴的話,學習matlab、R、甚至Python、Julia是最合適的,如果計算機的時間比你的時間寶貴的話,學習C、Fortran是必須的。當然除非你的工作非常特殊(比如一些大型的結構模型的估計),一般來說,還是自己的時間更寶貴一點。

綜上,做應用和做理論是不可能用一種軟體解決的,建議根據自己的方向進行挑選。我覺著stata、matlab是比較推薦的,一個方便,一個靈活,都很強大,而且學習難度都不大,用的人都很多,交流起來相當方便。

4)網友張真實
數據,簡單的用excel,直觀,方便。復雜一些的…excel最多可以有6萬多行,你確定你需要從那麼大量的數據開始「學經濟學么?

復雜的用R,各種模型,演算法,實現,基本上R都有對應的軟體包了,下載下來直接用即可,多讀文檔多練多用,半年左右就可以拋開excel直接用R作實戰了。我博士論文全部回歸和輸出都是用R的,現在寫的論文也都用它。替代品是Stata。也很好,但如果你和我一樣是從0開始,那麼強烈建議選R。

R的一個不足是沒法作符號運算,這個免費的解決方案有python搭配scipy numpy等幾個包,不過建議你用mathematica,它的符號計算功能最強大,輸出格式也最好。你可以找個jacobian矩陣搞一下符號計算,比較一下結果就知道了。

Python這東西,熟悉了R之後,發現有功能是R實現不了的,到時候有實際需求了,再學也不遲。不是立刻就需要的。

此外,所有經濟學研究(我是指empirics類型的,具體意思你懂的),都要會用latex,可以把它看做是一門編程語言。在word里排數學公式,用不了多久你就會瘋掉。R中可以用ggplot2來繪圖,輸出到tex中。普通數據表用xtable包輸出到tex,回歸結果用stargazer輸出到tex,都很方便。

5)網友bayes
首先要說的是R,絕對是目前國外學術界的主流,統計系基本除R以外沒有其他了,計量作為和統計相關的方向,R也在逐漸滲透。所以推薦學習。

順便說一句,R的學習曲線是比較陡峭的,所以我不太建議零基礎的人從R開始,否則挫折感會比較強烈。而python會略好,所以我建議從python開始。

python並非是專用於統計或者計量的軟體,而是一種非常流行的通用編程語言。經過多年發展,庫也非常齊備。我試用過numpy,scipy和pandas等庫,與其他通用編程語言相比,算是相當好用,不過個人感覺還是比不上R,比如畫圖,

ggplot2真心是神一般的存在,python的庫還是略遜一籌。但是,除了數據處理之外,python可以乾的事情太多了,也太牛了。我們主要要用到的,比如網頁採集數據,需要正則表達式,解析網頁等等。這些方面python就比R有優勢多了。

當然,從趨勢來看,未來似乎python比R更優。R是一群統計學家在編程序,python是一群計算機專家在爭取搞數據處理。似乎python的基礎更扎實。個人觀點,僅供參考。

stata我認為是除了R以外最好的計量軟體了,我兩者均用過數年數個項目,但是依然感覺R更好用,整理和處理數據更方便。所以即使在樓上諸位所提到的微觀計量領域,我依然更喜歡R。

除此以外spss,或者eviews等,感覺管理類學生用的更多,功能比較受限,不太推薦。這里不贅述。上述的幾個軟體,還有個問題,在於都是收費的,考慮到未來知識產權的保護,還是用免費的略靠譜。

R的主要缺點有兩個:
1,面對大數據乏力。這方面sas確實有優勢,但是不得不說,sas的語法太反人類了,完全接受不能。面對這個問題,我要說的是,你得看問題有多大。以我的經驗,經濟裡面的數據量似乎還不足以超過R的處理上限很多。可能金融的高頻數據會比較大,我個人沒啥經驗,如果遇到再補充。我嘗試過10g的數據,最簡單的辦法,不是學sas,而是買16g的內存。:)以現在的內存價格,我覺得32g以下的問題不大。

2,性能不足。這方面python也有同樣的問題,最好的解決方案是混合c/c++,不過這個就是無底洞了,耗時極多,都不見得能學好。建議的方法,還是買硬體,這個最簡單。:)當然用並行包等,也是解決方法之一,我嘗試過幾次用機房的多台機器做集群,不是太成功。求高人指點。

上面諸位還提到過幾個軟體,我也略微說一下自己知道的一些軟體的看法:

matlab:好東西,關鍵還是性能問題,同樣可以靠c/c++來解決。但是我不喜歡比較大的軟體,為了求個均值方差,等它啟動就佔了5分鍾。。。

julia:好東西X2,目前關注中,可能還比較年輕,導致配套的庫略少,不過看好未來發展,主要是吸取了matlab,python和c/c++的有點,寫的快,運算的也快,未來看漲,緊密關注。

最後提一下函數式編程,是個好東西,但是不看好純粹函數式編程的未來。它體現了一種頗先進的編程思想,但是在實際工作中,往往性能方面的問題較大。要解決這個問題,還是的混合函數式編程和其他方式,但這就是python,R等軟體已經實現的方式,似乎又沒有必要專門去學其他的函數式編程了。

6)上海財經大學博士 榮健欣
Stata微觀計量中應用極多,主要是直接輸命令回歸,需要編程的地方不多。

至於編程,推薦R、Python.
R是非常好的統計分析軟體,在計量經濟學中的應用可以見Econometrics in R, Applied Econometrics with R Time Series Analysis with Applications in R這幾本書

Python用來抓數據很好,並且有數學計算包SciPy可以部分替代Matlab之類科學計算的功能。

7)知乎網友justin
本科經濟統計學,由於學校奇葩的課程設置,我們分別使用過:

EViews:計量經濟學,時序和多元統計。
Stata:計量經濟學。
SPSS:專門開的一門課,這個巨汗,權當復習了一遍統計學。
Excel:大一的統計入門課使用的,這個也巨坑,就是簡單的函數使用,一點沒有涉及VBA。

Matlab:這個沒有專門的課,是上完了C語言程序設計以後副產品,後來接觸了R和Mathematica就基本拋棄了它。

R/S-Plus:在回歸分析的時候使用了S-Plus,不過那時候我已經使用R語言很久了,而且S-Plus基本兼容,所以沒有使用過S-Plus。

Minitab:質量控制課程上用的,基本的統計加上一些實驗設計。

SAS:這個在實驗室中自學過幾次,直接被其奇葩的語法雷到了,據說我們學校的研究生有專門的SAS課程(類似於本科的SPSS課程),呵呵了~

我們系的妹(xue)紙(ba)就曾經抱怨說使用的軟體太多了,完全被逼瘋的感覺,還給我們親愛的系主任提過意見。作為學渣也就這個問題問過系主任,她的意思是不同的軟體在處理不同的數據時候是各有所長的,而且你們課程還是蠻輕松的,就多學點吧,另外不同的老師有不同的軟體使用愛好,上課使用不同的軟體是必然的。

學習經濟學的同學,Excel和SPSS,EViews(或者Stata)就蠻好的了,Stata和EViews都可以寫一些程序的,SPSS的界面化操作也是很友好的。本人使用的R,在上各種課中也都會在學了那些軟體後再使用R來實現(其實絕大多數時候R都已經有現成的包了,我也大多是直接使用),R還是很不錯的,推薦。

很多前輩也提出了,經濟學學生學習編程適可而止就好了,要不然就是一條不歸路啊,面臨著徹底轉行的危險,本人就是一枚反面例子(淚~。所以什麼Python啊,C++啊,Julia啊就不要接觸了。

㈡ fortran求中位數

摘要 您好,很高興為您解答,求中位數的方法很多,對於大數據量最經典是桶的計數方法,但是對於這個問題不適用,因為數據是不斷變化的

㈢ 數據分析師需要掌握哪些能力,需要做哪些准備

1、懂業務。從事數據分析工作的前提就會需要懂業務,即熟悉行業知識、公司業務及流程,最好有自己獨到的見解,若脫離行業認知和公司業務背景,分析的結果只會是脫了線的風箏,沒有太大的使用價值。

2、懂管理。一方面是搭建數據分析框架的要求,比如確定分析思路就需要用到營銷、管理等理論知識來指導,如果不熟悉管理理論,就很難搭建數據分析的框架,後續的數據分析也很難進行。另一方面的作用是針對數據分析結論提出有指導意義的分析建議。

3、懂分析。指掌握數據分析基本原理與一些有效的數據分析方法,並能靈活運用到實踐工作中,以便有效的開展數據分析。基本的分析方法有:對比分析法、分組分析法、交叉分析法、結構分析法、漏斗圖分析法、綜合評價分析法、因素分析法、矩陣關聯分析法等。高級的分析方法有:相關分析法、回歸分析法、聚類分析法、判別分析法、主成分分析法、因子分析法、對應分析法、時間序列等。

4、懂工具。指掌握數據分析相關的常用工具。數據分析方法是理論,而數據分析工具就是實現數據分析方法理論的工具,面對越來越龐大的數據,我們不能依靠計算器進行分析,必須依靠強大的數據分析工具幫我們完成數據分析工作。

5、懂設計。懂設計是指運用圖表有效表達數據分析師的分析觀點,使分析結果一目瞭然。圖表的設計是門大學問,如圖形的選擇、版式的設計、顏色的搭配等等,都需要掌握一定的設計原則。
參考鏈接:http://ke..com/link?url=b8z_U8-QuI49JAGq#3

㈣ R 和 Python 用於統計學分析,哪個更好

總的概括:R主要在學術界流行,python(numpy scipy)在工程方便比較實用。

R是S(Splus)的開源版本,或者下一代。發源地在紐西蘭奧克蘭。這個軟體的統計背景很濃烈。我這里濃烈的意思是,如果你不熟習統計知識(歷史)的話,R的幫助文檔看起來是很累的。由統計背景的人開發。R的維護組叫CRAN-R。在生物信息方便,有個叫bioconctor的組織,裡面有很多生物信息方面可以用的軟體包,他們有一套自己維護package系統

Python是個綜合語言(這里特指指CPython解釋器),numpy scipy是數值計算的擴展包,pandas是主要用來做數據處理(numpy依賴),sympy做符號計算(類似mathematica?)此外還有一些不太成熟的包如sciki learn,statistical models。成熟度不如R。但是已經到了可用的水平了。是讀計算機的人寫的統計包。ipython 更新到1.0以後,功能基本完善,其notebook非常強大(感覺就像mathematica)而且還是基於web,在合作分享方面非常好用。

性能:
大家都說R慢,特別是CS的人。其實這里主要是兩點:一個R裡面數組的調用都是用復制的,二是Rscript慢。三是處理大數據慢。如果R用的好的話,R是不太慢的。具體來說就是Rscript用的少,多用命令,跑點小數據。這樣的話,實際在跑的都是背後的fortran和C庫。他們都有快二三十年歷史了。可謂異常可靠,優化得不能再優化了(指單線程,如果去看源代碼揮發先許多莫名的常數,永用了以後精度高速度快!)。比如一個自己編寫一個R腳本,loop套loop的那種,那真是想死的心都會有。外加一點,R處理文本文件很慢!

Python歸根揭底還是個有解釋器的腳本語言,而且有致命傷——GIL,但python最難能可貴的就是它很容易變得更快。比如pypy,cython,或者直接ctypes掛C庫。純python寫個原型,然後就開是不斷的profiling和加速吧。很輕易可以達到和C一個數量級的速度,但是寫程序、調試的時間少了很多。

並行計算:
R v15 之後有了自帶的parallel包,用挺輕松的。不過其實就是不停的fork,或者mpi,內存消耗挺厲害的。parSapply,parApply什麼的,真是很好用。

Python雖然有GIL——並行計算的死敵,但是有multiprocessing(fork依賴) ,是可以共享數據的什麼的,估計內存消耗方面比R好點,數據零散的話overhead很多。到了MPI的話,mpi4py還是挺好用的。用cython的話結合openmp可以打破GIL,但是過程中不能調用python的對象。

學習曲線:假設什麼編程都不會的同學。
R一開始還是很容易上手的,查到基本的命令,包,直接print一下就有結果了。但是如果要自己寫演算法、優化性能的時候,學習難度陡增。

Python么,挺好學的,絕大多數的幫助文檔都比R好了許多。有些包用起來沒R方便。總的來說深入吼R陡。

擴展資源:
基本上新的統計方法都會有R的package,安裝實用都不麻煩。但是基本上都是搞統計的人寫的計算機包。所以效能上可能有問好。比較出名的有兩個包的管理網站,cran-r 和bioconctor。 所以搞生化的估計R用起來很方便。

python的統計計算包們比R少,多很年輕,還在不斷的開發中。優於是計算機人寫的統計包,用起來的時候要多漲個心眼。

畫圖:
R自帶的那些工具就挺好用了,然後還有ggplot這種非常優美的得力工具。

python 有matplotlib,畫出來效果感覺比R自帶的好一些些,而且界面基於QT,跨平台支持。可能是R用得多了,pyplot用起來還是不太順手,覺得其各個組建的統一性不高。

IDE:
Rstudio非常不錯,提供類matlab環境。(用過vim-r-plugin,用過emacs + ess現在用vim。)

windows 下有python(x,y) 還有許多商業的工具。(本人現在的emacs環境還不是很順手~)

建議:
如果只是處理(小)數據的,用R。結果更可靠,速度可以接受,上手方便,多有現成的命令、程序可以用。

要自己搞個演算法、處理大數據、計算量大的,用python。開發效率高,一切盡在掌握。

ps:盲目地用R的包比盲目的地用python的包要更安全。起碼R會把你指向一篇論文,而python只是指向一堆代碼。R出問題了還有論文作者、審稿人陪葬。

㈤ 大數據分析哪款工具比較好 求專家介紹

有 一 個 公 司 做 的 還 是 不 錯 的 , 曉 明 科 技 , 他 們 很 多 成 功 的 案 例 , 你內 可 以 到 他 們 的 公容 司 去 看 看 , 很 多 大 公 司 也 都 是 跟 這 家 公 司 合 作 的 , 很 不 錯 的

㈥ 數據是什麼

何謂數據結構
?
數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由那些成分數據構成,以什麼方式構成,呈什麼結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映成分數據之間的邏輯關系,而物理上的數據結構反映成分數據在計算機內部的存儲安排。數據結構是數據存在的形式。 數據結構是信息的一種組織方式,其目的是為了提高演算法的效率,它通常與一組演算法的集合相對應,通過這組演算法集合可以對數據結構中的數據進行某種操作。
?
數據結構主要研究什麼?
?
數據結構作為一門學科主要研究數據的各種邏輯結構和存儲結構,以及對數據的各種操作。因此,主要有三個方面的內容:數據的邏輯結構;數據的物理存儲結構;對數據的操作(或演算法)。通常,演算法的
?
設計取決於數據的邏輯結構,演算法的實現取決於數據的物理存儲結構。
?
什麼是數據結構?什麼是邏輯結構和物理結構?
?
數據是指由有限的符號(比如,"0"和"1",具有其自己的結構、操作、和相應的語義)組成的元素的集合。結構是元素之間的關系的集合。通常來說,一個數據結構DS 可以表示為一個二元組:
?
DS=(D,S), //i.e., data-structure=(data-part,logic-structure-part) 這里D是數據元素的集合(或者是「結點」,可能還含有「數據項」或「數據域」),S是定義在D(或其他集合)上的關系的集合,S = ,稱之為元素的邏輯結構。 邏輯結構有四種基本類型:集合結構、線性結構、樹狀結構和網路結構。表和樹是最常用的兩種高效數據結構,許多高效的演算法可以用這兩種數據結構來設計實現。表是線性結構的(全序關系),樹(偏序或層次關系)和圖(局部有序(weak/local orders))是非線性結構。
?
數據結構的物理結構是指邏輯結構的存儲鏡像(image)。數據結構 DS 的物理結構 P對應於從 DS 的數據元素到存儲區M(維護著邏輯結構S)的一個映射:
?
(PD,S) -- > M 存儲器模型:一個存儲器 M 是一系列固定大小的存儲單元,每個單元 U 有一個唯一的地址 A(U),該地址被連續地編碼。每個單元 U 有一個唯一的後繼單元 U'=succ(U)。 P 的四種基本映射模型:順序(sequential)、鏈接(linked)、索引(indexed)和散列(hashing)映射。
?
因此,我們至少可以得到4×4種可能的物理數據結構:
?
sequential (sets)
linked lists
indexed trees
hash graphs
?
(並不是所有的可能組合都合理)
?
??? 數據結構DS上的操作:所有的定義在DS上的操作在改變數據元素(節點)或節點的域時必須保持DS的邏輯和物理結構。
?
DS上的基本操作:任何其他對DS的高級操作都可以用這些基本操作來實現。最好將DS和他的所有基本操作看作一個整體——稱之為模塊。我們可以進一步將該模塊抽象為數據類型(其中DS的存儲結構被表示為私有成員,基本操作被表示為公共方法),稱之為ADT。作為ADT,堆棧和隊列都是一種特殊的表,他們擁有表的操作的子集。 對於DATs的高級操作可以被設計為(不封裝的)演算法,利用基本操作對DS進行處理。
?
好的和壞的DS:如果一個DS可以通過某種「線性規則」被轉化為線性的DS(例如線性表),則稱它為好的DS。好的DS通常對應於好的(高效的)演算法。這是由計算機的計算能力決定的,因為計算機本質上只能存取邏輯連續的內存單元,因此如何沒有線性化的結構邏輯上是不可計算的。比如對一個圖進行操作,要訪問圖的所有結點,則必須按照某種順序來依次訪問所有節點(要形成一個偏序),必須通過某種方式將圖固有的非線性結構轉化為線性結構才能對圖進行操作。
?
樹是好的DS——它有非常簡單而高效的線性化規則,因此可以利用樹設計出許多非常高效的演算法。樹的實現和使用都很簡單,但可以解決大量特殊的復雜問題,因此樹是實際編程中最重要和最有用的一種數據結構。樹的結構本質上有遞歸的性質——每一個葉節點可以被一棵子樹所替代,反之亦然。實際上,每一種遞歸的結構都可以被轉化為(或等價於)樹形結構。
?

從機器語言到高級語言的抽象
?
我們知道,演算法被定義為一個運算序列。這個運算序列中的所有運算定義在一類特定的數據模型上,並以解決一類特定問題為目標。這個運算序列應該具備下列四個特徵。 有限性,即序列的項數有限,且每一運算項都可在有限的時間內完成;確定性,即序列的每一項運算都有明確的定義,無二義性;可以沒有輸入運算項,但一定要有輸出運算項;可行性,即對於任意給定的合法的輸入都能得到相應的正確的輸出。這些特徵可以用來判別一個確定的運算序列是否稱得上是一個演算法。 但是,我們現在的問題不是要判別一個確定的運算序列是否稱得上是一個演算法,而是要對一個己經稱得上是演算法的運算序列,回顧我們曾經如何用程序設計語言去表達它。
?
演算法的程序表達,歸根到底是演算法要素的程序表達,因為一旦演算法的每一項要素都用程序清楚地表達,整個演算法的程序表達也就不成問題。
?
作為運算序列的演算法,有三個要素。 作為運算序列中各種運算的運算對象和運算結果的數據;運算序列中的各種運算;運算序列中的控制轉移。這三種要素依序分別簡稱為數據、運算和控制。 由於演算法層出不窮,變化萬千,其中的運算所作用的對象數據和所得到的結果數據名目繁多,不勝枚舉。最簡單最基本的有布爾值數據、字元數據、整數和實數數據等;稍復雜的有向量、矩陣、記錄等數據;更復雜的有集合、樹和圖,還有聲音、圖形、圖像等數據。 同樣由於演算法層出不窮,變化萬千,其中運算的種類五花八門、多姿多彩。最基本最初等的有賦值運算、算術運算、邏輯運算和關系運算等;稍復雜的有算術表達式和邏輯表達式等;更復雜的有函數值計算、向量運算、矩陣運算、集合運算,以及表、棧、隊列、樹和圖上的運算等:此外,還可能有以上列舉的運算的復合和嵌套。 關於控制轉移,相對單純。在串列計算中,它只有順序、分支、循環、遞歸和無條件轉移等幾種。
?
我們來回顧一下,自從計算機問世以來,演算法的上述三要素的程序表達,經歷過一個怎樣的過程。
?
最早的程序設計語言是機器語言,即具體的計算機上的一個指令集。當時,要在計算機上運行的所有演算法都必須直接用機器語言來表達,計算機才能接受。演算法的運算序列包括運算對象和運算結果都必須轉換為指令序列。其中的每一條指令都以編碼(指令碼和地址碼)的形式出現。與演算法語言表達的演算法,相差十萬八千里。對於沒受過程序設計專門訓練的人來說,一份程序恰似一份"天書",讓人看了不知所雲,可讀性
?
極差。
?
用機器語言表達演算法的運算、數據和控制十分繁雜瑣碎,因為機器語言所提供的指令太初等、原始。機器語言只接受算術運算、按位邏輯運算和數的大小比較運算等。對於稍復雜的運算,都必須一一分解,直到到達最初等的運算才能用相應的指令替代之。機器語言能直接表達的數據只有最原始的位、位元組、和字三種。演算法中即使是最簡單的數據如布爾值、字元、整數、和實數,也必須一一地映射到位、位元組和字
中,還得一一分配它們的存儲單元。對於演算法中有結構的數據的表達則要麻煩得多。機器語言所提供的控制轉移指令也只有無條件轉移、條件轉移、進入子程序和從子程序返回等最基本的幾種。用它們來構造循環、形成分支、調用函數和過程得事先做許多的准備,還得靠許多的技巧。 直接用機器語言表達演算法有許多缺點。
?

大量繁雜瑣碎的細節牽制著程序員,使他們不可能有更多的時間和精力去從事創造性的勞動,執行對他們來說更為重要的任務。如確保程序的正確性、高效性。程序員既要駕馭程序設計的全局又要深入每一個局部直到實現的細節,即使智力超群的程序員也常常會顧此失彼,屢出差錯,因而所編出的程序可靠性差,且開發周期長。 由於用機器語言進行程序設計的思維和表達方式與人們的習慣大相徑庭,只有經過
較長時間職業訓練的程序員才能勝任,使得程序設計曲高和寡。因為它的書面形式全是"密"碼,所以可讀性差,不便於交流與合作。因為它嚴重地依賴於具體的計算機,所以可移植性差,重用性差。這些弊端造成當時的計算機應用未能迅速得到推廣。
?
克服上述缺點的出路在於程序設計語言的抽象,讓它盡可能地接近於演算法語言。 為此,人們首先注意到的是可讀性和可移植性,因為它們相對地容易通過抽象而得到改善。於是,很快就出現匯編語言。這種語言對機器語言的抽象,首先表現在將機器語言的每一條指令符號化:指令碼代之以記憶符號,地址碼代之以符號地址,使得其含義顯現在符號上而不再隱藏在編碼中,可讓人望"文"生義。其次表現在這種語言擺脫了具體計算機的限制,可在不同指令集的計算機上運行,只要該計算機配上匯編語言的一個匯編程序。這無疑是機器語言朝演算法語言靠攏邁出的一步。但是,它離演算法語言還太遠,以致程序員還不能從分解演算法的數據、運算和控制到匯編才能直接表達的指令等繁雜瑣碎的事務中解脫出來。 到了50年代中期,出現程序設計的高級語言如Fortran,Algol60,以及後來的PL/l, Pascal等,演算法的程序表達才產生一次大的飛躍。
?
誠然,演算法最終要表達為具體計算機上的機器語言才能在該計算機上運行,得到所需要的結果。但匯編語言的實踐啟發人們,表達成機器語言不必一步到位,可以分兩步走或者可以築橋過河。即先表達成一種中介語言,然後轉成機器語言。匯編語言作為一種中介語言,並沒有獲得很大成功,原因是它離演算法語
?
言還太遠。這便指引人們去設計一種盡量接近演算法語言的規范語言,即所謂的高級語言,讓程序員可以用它方便地表達演算法,然後藉助於規范的高級語言到規范的機器語言的"翻譯",最終將演算法表達為機器語言。而且,由於高級語言和機器語言都具有規范性,這里的"翻譯"完全可以機械化地由計算機來完成,就像匯編語言被翻譯成機器語言一樣,只要計算機配上一個編譯程序。 上述兩步,前一步由程序員去完成,後一步可以由編譯程序去完成。在規定清楚它們各自該做什麼之後,這兩步是完全獨立的。它們各自該如何做互不相干。前一步要做的只是用高級語言正確地表達給定的演算法,產生一個高級語言程序;後一步要做的只是將第一步得到的高級語言程序翻譯成機器語言程序。至於程序員如何用高級語言表達演算法和編譯程序如何將高級語言表達的演算法翻譯成機器語言表達的演算法,顯然毫不相干。
?
處理從演算法語言最終表達成機器語言這一復雜過程的上述思想方法就是一種抽象。匯編語言和高級語言的出現都是這種抽象的範例。 與匯編語言相比,高級語言的巨大成功在於它在數據、運算和控制三方
?
面的表達中引入許多接近演算法語言的概念和工具,大大地提高抽象地表達演算法的能力。 在運算方面,高級語言如Pascal,除允許原封不動地運用演算法語言的四則運算、邏輯運算、關系運算、算術表達式、邏輯表達式外,還引入強有力的函數與過程的工具,並讓用戶自定義。這一工具的重要性不僅在於它精簡了重復的程序文本段,而且在於它反映出程序的兩級抽象。
?
在函數與過程調用級,人們只關心它能做什麼,不必關心它如何做。只是到函數與過程的定義時,人們才給出如何做的細節。用過高級語言的讀者都知道,一旦函數與過程的名稱、參數和功能被規定清楚,那麼,在程序中調用它們便與在程序的頭部說明它們完全分開。你可以修改甚至更換函數體與過程體,而不影響它們的被調用。如果把函數與過程名看成是運算名,把參數看成是運算的對象或運算的結果,那麼
?
,函數與過程的調用和初等運算的引用沒有兩樣。利用函數和過程以及它們的復合或嵌套可以很自然地表達演算法語言中任何復雜的運算。
?
在數據方面,高級語言如Pascal引人了數據類型的概念,即把所有的數據加以分類。每一個數據(包括表達式)或每一個數據變數都屬於其中確定的一類。稱這一類數據為一個數據類型。 因此,數據類型是數據或數據變數類屬的說明,它指示該數據或數據變數可能取的值的全體。對於無結構的數據,高級語言如Pascal,除提供標準的基本數據類型--布爾型、字元型、整型和實型外,還提供用戶可自定義的枚舉類、子界類型和指針類型。這些類型(除指針外),其使用方式都順應人們在演算法語言中使用的習慣。對於有結構的數據,高級語言如Pascal,提供了數組、記錄、有限制的集合和文件等四種標準的結構數據類型。其中,數組是科學計算中的向量、矩陣的抽象;記錄是商業和管理中的記錄的抽象;有限制的集合是數學中足夠小的集合的勢集的抽象;文件是諸如磁碟等外存儲數據的抽象。
?
人們可以利用所提供的基本數據類型(包括標準的和自定義的),按數組、記錄、有限制的集合和文件的構造規則構造有結構的數據。 此外,還允許用戶利用標準的結構數據類型,通過復合或嵌套構造更復雜更高層的結構數據。這使得高級語言中的數據類型呈明顯的分層。 高級語言中數據類型的分層是沒有窮盡的,因而用它們可以表達演算法語言中任何復雜層次的數據。 在控制方面,高級語言如Pascal,提供了表達演算法控制轉移的六種方式。
?
(1)預設的順序控制";"。
?
(2)條件(分支)控制:"if表達式(為真)then S1 else S2;" 。
?
(3)選擇(情況)控制:
?
"Case 表達式 of
?
值1: S1
值2: S2
...
值n: Sn
end"
?
(4)循環控制:
?
"while 表達式(為真) do S;" 或
"repeat S until 表達式(為真);" 或
"for變數名:=初值 to/downto 終值do S;"
?
(5)函數和過程的調用,包括遞歸函數和遞歸過程的調用。
?
(6)無條件轉移goto。

這六種表達方式不僅覆蓋了演算法語言中所有控製表達的要求,而且不再像機器語言或匯編語言那樣原始、那樣繁瑣、那樣隱晦,而是如上面所看到的,與自然語言的表達相差無幾。 程序設計語言從機器語言到高級語言的抽象,帶來的主要好處是: 高級語言接近演算法語言,易學、易掌握,一般工程技術人員只要幾周時間的培訓就可以勝任程序員的工作;高級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;高級語言遠離機器語言,與具體的計算機硬體關系不大,因而所寫出來的程序可移植性好,重用率高; 由於把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發周期短,且程、序員得到解脫,可以集中時間和精力去從事對於他們來說更為重要的創造性勞動,以提高、程序的質量。
?
數據結構、數據類型和抽象數據類型
?
數據結構、數據類型和抽象數據類型,這三個術語在字面上既不同又相近,反映出它們在含義上既有區別又有聯系。
?
數據結構是在整個計算機科學與技術領域上廣泛被使用的術語。它用來反映一個數據的內部構成,即一個數據由哪些成分數據構成,以什麼方式構成,呈什麼結構。數據結構有邏輯上的數據結構和物理上的數據結構之分。邏輯上的數據結構反映成分數據之間的邏輯關系,物理上的數據結構反映成分數據在計算機內的存儲安排。數據結構是數據存在的形式。
?
數據是按照數據結構分類的,具有相同數據結構的數據屬同一類。同一類數據的全體稱為一個數據類型。在程序設計高級語言中,數據類型用來說明一個數據在數據分類中的歸屬。它是數據的一種屬性。這個屬性限定了該數據的變化范圍。為了解題的需要,根據數據結構的種類,高級語言定義了一系列的數據類型。不同的高級語言所定義的數據類型不盡相同。Pascal語言所定義的數據類型的種類。
?
其中,簡單數據類型對應於簡單的數據結構;構造數據類型對應於復雜的數據結構;在復雜的數據結構里,允許成分數據本身具有復雜的數據結構,因而,構造數據類型允許復合嵌套;指針類型對應於數據結構中成分數據之間的關系,表面上屬簡單數據類型,實際上都指向復雜的成分數據即構造數據類型中的數據,因此這里沒有把它劃入簡單數據類型,也沒有劃入構造數據類型,而單獨劃出一類。
?
數據結構反映數據內部的構成方式,它常常用一個結構圖來描述:數據中的每一項成分數據被看作一個結點,並用方框或圓圈表示,成分數據之間的關系用相應的結點之間帶箭號的連線表示。如果成分數據本身又有它自身的結構,則結構出現嵌套。這里嵌套還允許是遞歸的嵌套。
?
由於指針數據的引入,使構造各種復雜的數據結構成為可能。按數據結構中的成分數據之間的關系,數據結構有線性與非線性之分。在非線性數據結構中又有層次與網狀之分。 由於數據類型是按照數據結構劃分的,因此,一類數據結構對應著一種數據類型。數據類型按照該類型中的數據所呈現的結構也有線性與非線性之分,層次與網狀之分。一個數據變數,在高級語言中的類型說明必須是讀變數所具有的數據結構所對應的數據類型。最常用的數據結構是數組結構和記錄結構。數組結構的特點是:
?
成分數據的個數固定,它們之間的邏輯關系由成分數據的序號(或叫數組的下標)來體現。這些成分數據按照序號的先後順序一個挨一個地排列起來。每一個成分數據具有相同的結構(可以是簡單結構,也可以是復雜結構),因而屬於同一個數據類型(相應地是簡單數據類型或構造數據類型)。這種同一的數據類型稱為基類型。所有的成分數據被依序安排在一片連續的存儲單元中。 概括起來,數組結構是一個線性的、均勻的、其成分數據可隨機訪問的結構。
?
由於這、種結構有這些良好的特性,所以最常被人們所採用。在高級語言中,與數組結構相對應的、數據類型是數組類型,即數組結構的數據變數必須說明為array [i] of T0 ,其中i是數組、結構的下標類型,而T0是數組結構的基類型。 記錄結構是另一種常用的數據結構。它的特點是:與數組結構一樣,成分數據的個數固定。但成分數據之間沒有自然序,它們處於平等地位。每一個成分數據被稱為一個域並賦予域名。不同的域有不同的域名。不同的域允許有不同的結構,因而允許屬於不同的數據類型。與數組結構一樣,它們可以隨機訪問,但訪問的途徑靠的是域名。在高級語言中記錄結構對應的數據類型是記錄類型。記錄結構的數據的變數必須說明為記錄類型。
?
抽象數據類型的含義在上一段已作了專門敘述。它可理解為數據類型的進一步抽象。即把數據類型和數據類型上的運算捆在一起,進行封裝。引入抽象數據類型的目的是把數據類型的表示和數據類型上運算的實現與這些數據類型和運算在程序中的引用隔開,使它們相互獨立。對於抽象數據類型的描述,除了必須描述它的數據結構外,還必須描述定義在它上面的運算(過程或函數)。抽象數據類型上定義的過程和函
數以該抽象數據類型的數據所應具有的數據結構為基礎。
?
泛型設計和數據結構與演算法
?
下面我想再說說關於泛型程序設計模型對於數據結構和演算法方面的最新推動,泛型思想已經把數據結
?
構和演算法方面的基本思想抽象到了一個前所未有的高度,現在有多種程序設計語言支持泛型設計,比如
ADA,C++,而且據說在JAVA的下一版本和C#中也將對泛型設計進行全面的支持。
?
先說說泛型設計的基本思想:泛型編程(generic programming,以下直接以GP稱呼)是一種全新的程序設計思想,和OO,OB,PO這些為人所熟知的程序設計想法不同的是GP抽象度更高,基於GP設計的組件之間偶合度底,沒有繼承關系,所以其組件間的互交性和擴展性都非常高。我們都知道,任何演算法都是作用在一種特定的數據結構上的,最簡單的例子就是快速排序演算法最根本的實現條件就是所排序的對象是存
貯在數組裡面,因為快速排序就是因為要用到數組的隨機存儲特性,即可以在單位時間內交換遠距離的對象,而不只是相臨的兩個對象,而如果用聯表去存儲對象,由於在聯表中取得對象的時間是線性的既O[n],這樣將使快速排序失去其快速的特點。也就是說,我們在設計一種演算法的時候,我們總是先要考慮其應用的數據結構,比如數組查找,聯表查找,樹查找,圖查找其核心都是查找,但因為作用的數據結構不同
?
將有多種不同的表現形式。數據結構和演算法之間這樣密切的關系一直是我們以前的認識。泛型設計的根本思想就是想把演算法和其作用的數據結構分離,也就是說,我們設計演算法的時候並不去考慮我們設計的演算法將作用於何種數據結構之上。泛型設計的理想狀態是一個查找演算法將可以作用於數組,聯表,樹,圖等各種數據結構之上,變成一個通用的,泛型的演算法。這樣的理想是不是很誘惑人?
?
泛型編程帶來的是前所未有的彈性以及不會損失效率的抽象性,GP和OO不同,它不要求你通過額外的間接層來調用函數:它讓你撰寫完全一般化並可重復使用的演算法,其效率與針對特定數據結構而設計的演算法旗鼓相當。我們大家都知道數據結構在C++中可以用用戶定義類型來表示,而C++中的模板技術就是以類型作為參數,那麼我可以想像利用模板技術可以實現我們開始的GP思想,即一個模板函數可以對於各種傳遞進來的類型起作用,而這些類型就可以是我們定義的各種數據結構。
?
泛型演算法抽離於特定類型和特定數據結構之外,使得其適應與盡可能的一般化類型,演算法本身只是為了實現演算法其需要表達的邏輯本質而不去被為各種數據結構的實現細節所干擾。這意味著一個泛型演算法實際具有兩部分。1,用來描敘演算法本質邏輯的實際指令;2,正確指定其參數類型必須滿足的性質的一組需求條件。到此,相信有不少人已經開始糊塗了,呵呵,不要緊。畢竟GP是一種抽象度非常高的程序設計思想,裡面的核心就是抽象條件成為成為程序設計過程中的核心,從而取代了類型這在OO裡面的核心地位,正是因為類型不在是我們考慮的重點,類型成為了抽象條件的外衣,所以我們稱這樣的程序思想為泛型思想------把類型泛化。

㈦ 怎樣學習人工智慧和大數據

大數據主要關注抄點是性能,所以跟行業關系比較大,當然跟數據分析也沾邊
人工智慧主要是機器學習演算法,當然當前主流是用深度學習的技術, 老一點的傳統統計學習方法也有使用場景。 既然有了統計學基礎,傳統演算法應該很容易理解,深度學習可以去看 B站一下 李宏毅 的課
實現上以python為核心, 機器學習有sklearn庫, 深度學習框架很多,可以挑選一個封裝好的的 比如fastai
其他編程語言就不用擴展了,

㈧ fortran語言轉換為C語言的程序

f2c 和 p2c 是兩個源代碼轉換程序. f2c 把 FORTRAN 代碼轉換為 C 代碼, p2c 把 Pascal 代碼轉換為 C 代碼. 當你安裝 GCC 時這兩個程序都會被安裝上去.

如果你有一些用 FORTRAN 或 Pascal 寫的代碼要用 C 重寫的話, f2c 和 p2c對你非常有用. 這兩個程序產生的 C 代碼一般不用修改就直接能被 GCC 編譯.

如果要轉換的 FORTRAN 或 Pascal 程序比較小的話可以直接使用 f2c 或 p2c不用加任何選項. 如果要轉換的程序比較龐大, 包含很多文件的話你可能要用到一些命令行選項.

在一個 FORTRAN 程序上使用 f2c , 輸入下面的命令:

f2c my_fortranprog.f

注意: f2c 要求被轉換的程序的擴展名為 .f 或 a .F .

要把一個Pascal 程序裝換為 C 程序, 輸入下面的命令:

p2c my_pascalprogram.pas

這兩個程序產生的 C 源代碼的文件名都和原來的文件名相同, 但擴展名由 .f或 .pas 變為 .c.

㈨ 數據可視化工具系統有哪些

近幾年冒出來復的BI之秀,如TB、qlk都強制調可視化,一改傳統BI工具SAP BO、IBM家的cognos(不過近幾年貌似都在研發雲BI)。 這里不談開源,還沒見到能成熟應用的BI。成熟的BI工具如 FineBI (國內)和 Tableau(國外),都很推薦。tableau可視化探索分析很贊,數據量多的時候性能較差,企業用多並發價格貴。FineBI 國產帆軟,為數不多能占據世界領先地位的數據工具,重在數據處理性能和企業應用的復雜情況(市場步伐很快),自帶ETL,可視化還行,價格良心,個人用免費。如圖可視化效果:

㈩ fortran 語言中GE,GT,LE,LT代表什麼意思

1、GE:大於等於號(>=);

2、GT是大於號(>);

3、LE是小於等於號(<=);

4、LT是小於號(<)。

(10)fortran大數據擴展閱讀:

最大特性是接近數學公式的自然描述,在計算機里具有很高的執行效率。易學,語法嚴謹。可以直接對矩陣和復數進行運算,這一點類似matlab。

自誕生以來廣泛地應用於數值計算領域,積累了大量高效而可靠的源程序。很多專用的大型數值運算計算機針對Fortran做了優化。廣泛地應用於並行計算和高性能計算領域。

網路-公式翻譯器

閱讀全文

與fortran大數據相關的資料

熱點內容
先入為主小說 瀏覽:40
大數據信息系統 瀏覽:710
女同性戀 大尺度電影 瀏覽:356
男女私人影院 瀏覽:187
uos操作系統中文件刪不掉 瀏覽:900
word無窮怎麼輸入 瀏覽:766
翁虹演過18禁的電影 瀏覽:339
文件落款的格式 瀏覽:252
linux怎樣查詢網卡mac地址 瀏覽:933
韓國電影愛人在線觀看 瀏覽:829
一單兩庫一細則哪個文件 瀏覽:478
華為主題包應該移動到哪個文件夾 瀏覽:331
午夜影色 瀏覽:242
mysql資料庫中文編碼 瀏覽:703
現在編程一般用哪個軟體 瀏覽:283
java調用已有的dll 瀏覽:393
卧底gl 瀏覽:394
蛇王用蛇尾上女主小說 瀏覽:466
怎麼取消母版頁的js引用 瀏覽:469
韓國刺激電影合計 瀏覽:899

友情鏈接