Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
ython可以使用各種各樣的文件作為數據源:
平面文件--txt,csv - 很簡單,可以使用numpy或pandas導入。
numpy.recfromcsv - 加載存儲在逗號分隔文件中的ASCII數據。返回的數組是一個記錄數組(如果usemask=False)或masked記錄數組(如果usemask=True)。Python示例代碼:
data=np.recfromcsv(file)
numpy.loadtxt - 此函數旨在成為簡單格式化文件的快速閱讀器。該genfromtxt函數提供了更復雜的處理,例如,缺失值的行。
data=np.loadtxt('file.csv', delimiter=',', skiprows=1, usecols=[0,2])
numpy.genfromtxt - 從文本文件加載數據,并按指定處理缺失值。是更復雜的函數,有很多參數來控制你的導入。
data=np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)
使用pandas更容易 - 一行,你準備好DataFrame中的文件。還支持可選地將文件迭代或分解為塊。
data=pd.read_csv(file, nrows=5, header=None, sep='\t', comment='#', na_values='Nothing')
它用于序列化和反序列化Python對象結構。可以對python中的任何對象進行pickle,以便將其保存在磁盤上。pickle的作用是在將對象寫入文件之前先將其“序列化”。Pickling是一種將python對象(list,dict等)轉換為字符流的方法。這個想法是這個字符流包含在另一個python腳本中重建對象所需的所有信息。下面的代碼將打印一個在某處創建并存儲在文件中的字典 - 非常酷,不是嗎?
import pickle with open('data.pkl', 'rb') as file: d=pickle.load(file) print(d)
與pandas.read_excel將Excel表讀入panda DataFrame中,并進行了大量的自定義導入數據,這個函數的文檔很清楚,你可以用Excel文件做任何你想做的事情。
df=pd.read_excel('file.xlsx', sheet_name='sheet1')
SAS代表統計分析軟件。SAS數據集包含組織為觀察(行)和變量(列)表的數據值。要打開此類文件并從中導入數據,請看下面的Python代碼示例:
from sas7bdat import SAS7BDAT with SAS7BDAT('some_data.sas7bdat') as file: df_sas=file.to_data_frame()
Stata是一款強大的統計軟件,可以讓用戶分析、管理和生成數據的圖形化可視化。它主要被經濟學、生物醫學和政治學領域的研究人員用于研究數據模式。存儲在.dta文件中的數據,導入它的最好方法是pandas.read_stata
df=pd.read_stata('file.dta')
分層數據格式(HDF)是一組文件格式(HDF4, HDF5),用于存儲和組織大量數據。HDF5是一個獨特的技術套件,可以管理非常大和復雜的數據集合。HDF5簡化了文件結構,只包含兩種主要類型的對象:
這就產生了一種真正的層次化、文件系統式的數據格式。實際上,HDF5文件中的資源甚至可以使用類似/ path / to / resource訪問HDF5文件中的資源。元數據以用戶定義的、附加到Groups和Datasets的命名屬性的形式存儲。然后,可以使用數據集、組和屬性構建表示圖像和表的更復雜的存儲api。
要導入HDF5文件,我們需要h5py庫。下面的Python代碼示例使我更輕松,完全可以理解。
import h5py # Load file: data=h5py.File('file.hdf5', 'r') # Print the keys of the file for key in data.keys(): print(key) # Now when we know the keys we can get the HDF5 group group=data['group_name'] # Going one level deeper, check out keys of group for key in group.keys(): print(key) # And so on and so on
很多人使用MATLAB并將數據存儲在.mat文件中。那些文件是什么?這些文件包含在MATLAB工作空間中分配給它們的變量和對象列表。將它作為字典導入Python并不奇怪,其中鍵是MATLAB變量和值 - 分配給這些變量的對象。要編寫和讀取MATLAB文件,請使用scipy.io包。
import scipy.io mat=scipy.io.loadmat('some_project.mat') print(mat.keys())
使用驅動程序連接到數據庫,我們可以直接從那里獲取數據。通常它意味著:創建連接,連接,運行查詢,獲取數據,關閉連接。它可以一步一步地完成,但在pandas 中只需要sqlalchemy包創建的連接。下面是連接到sqlite數據庫引擎并從中獲取數據的示例:
from sqlalchemy import create_engine import pandas as pd # Create engine engine=create_engine('sqlite:///localdb.sqlite') # Execute query and store records in DataFrame df=pd.read_sql_query("select * from table", engine)
首先,如果我們有一個文件的URL,我們可以使用標準的pandas.read_csv / pandas.read_excel函數在參數“file=”中指定它
df=pd.read_csv('https://www.example.com/data.csv', sep=';')
除此之外,要從Web獲取數據,我們需要使用HTTP協議,特別是GET方法。并且requests 包做了這個令人難以置信的工作。要從requests.get收到的響應中訪問文本,我們只需要使用方法.text。
import requests r=requests.get('http://www.example.com/some_html_page') print(r.text)
r.text將為我們提供一個包含所有html標簽的網頁 - 不是很有用,不是嗎?我們有一個BeautifulSoup包,可以解析HTML并提取我們需要的信息,在本例中是所有超鏈接(繼續前面的例子):
from bs4 import BeautifulSoup html_doc=r.text # Create a BeautifulSoup object from the HTML soup=BeautifulSoup(html_doc) # Find all 'a' tags (which define hyperlinks) a_tags=soup.find_all('a') # Print the URLs to the shell for link in a_tags: print(link.get('href'))
在計算機編程中,應用程序編程接口(API)是一組子例程定義,通信協議和用于構建軟件的工具。一般而言,它是一組明確定義的各種組件之間的通信方法。有許多不同的API,首先必須做的是檢查文檔,但事實是幾乎所有API都以JSON格式返回數據。requests 包將再次幫助我們。(我們必須發送HTTP GET請求以從API獲取數據)。
import requests r=requests.get('https://www.example.com/some_endpoint') # Decode the JSON data into a dictionary: json_data=r.json() # Print each key-value pair in json_data for k in json_data.keys(): print(k + ': ', json_data[k])
我們可以看到,數據無處不在,我們必須知道獲取它的所有方法
件介紹
Matlab(矩陣實驗室)是全球領先的數學計算軟件開發商美國 MathWorks 公司研發的一款面向科學與工程計算的高級語言的商業數學軟件,集算法開發、數據分析、可視化和數值計算于一體的編程環境,其核心是仿真交互式矩陣計算,廣泛應用于科學計算、數據分析、算法開發和繪圖設計等科研領域應用環境。
MATLAB 是一種面向科學與工程計算的高級語言,允許以數學形式的語言編寫程序,比BASIC、FORTRAN 和 C語言都要更加接近于我們書寫數學計算公式的思維方式。可以說,用MATLAB 編寫程序,就像是在草稿紙上排列公式和求解問題,因此對于理科生和科研人員來說,它編寫簡單,編程效率高,而且通俗易懂。
MATLAB 是對代碼、文件和數據進行管理的開發環境;是按迭代的方式探查、設計及求解問題的交互式工具;可用于包括線性代數、統計、傅里葉分析、篩選、優化以及數值積分等的數學函數;可用于可視化數據的二維和三維圖形函數構建和設計;可用于基于MATLAB 的算法與外部應用程序和語言集成的各種函數。
MATLAB核心競爭力之一的Simulink模塊化建模環境,是面向多域和嵌入式工程系統的仿真和基于模型的設計,可以用傻瓜式的拖動進行很多問題的建模,廣泛用于汽車、航空航天、通訊、電子、信號處理、工業自動化、視頻處理和圖像處理系統等領域的創新和開發。如果沒有Simulink,通信、控制、信號、車輛等專業的研究效率都會受到影響。哪怕不用Simulink,很多這方面的仿真軟件也只提供MATLAB接口。
軟件截圖
更新日志
MATLAB幫助文檔 - MathWorks 中國
https://ww2.mathworks.cn/help/releases/R2021a/matlab/getting-started-with-matlab.html
MATLAB發行說明 - MathWorks 中國
https://ww2.mathworks.cn/help/releases/R2021a/matlab/release-notes.html
運行要求
Windows 7 SP1 x64、Windows 10 1803 x64 或更高版
硬件要求:16G內存 + 獨顯 + Inter酷睿(適合)、AMD銳龍
2021年可以流暢跑Matlab的生產力兼游戲筆記本型號推薦:
R/Y9000P,X ROG幻15/14, ThinkPad P17, X1 Carbon 美版
其次:聯想小新Pro/Air Plus(辦公和生產力需求買帶獨顯版)
效驗信息
# 初始完整安裝包
鏡像大小:19.2GB
創建時間:Fri Sep 17 15:46:28 2021
初始版本:R2021b v9.11.0.1769968
鏡像名稱:Matlab911R2021b_Win64.iso
SHA1: E28A6EEED0ED7918D32BDC0297E4932256DFDD36
# 更新補丁安裝包
鏡像大小:6.76GB
創建時間:2022年2月8日, 17:00:00
詳細版本:R2021b Update 3 v9.11.0.1873467
鏡像名稱:Matlab911_R2021b_Update3Win.iso
SHA1: 6078C9C554EC9D9128F5D0AA8009A9FAA3EB7875
網盤:MATLAB R2021b Update3 - 清風小站 (qfwl.ltd)
ATLAB的工作區有:基礎工作區( 'base' )和函數工作區('caller')。
基礎工作區:用于存儲在命令行中創建的變量,或者存儲當前命令行或編輯器運行m腳本時腳本創建的變量。
函數工作區:為保護數據的完整性,每個函數都有其自己的工作區,該工作區與基礎工作區和所有其他工作區分開。例如,假設 funA 調用 funB。funB 的調用方工作區就是 funA。
如何在工作區之間共享變量或如何使它們在函數執行之間持久保留。
大多數情況下,在函數內創建的變量是僅可在該函數內識別的局部變量。局部變量不能用在命令行中,也不適用于任何其他函數。但是,可以通過多種方式在函數或工作區之間共享數據。
1.最佳做法:傳遞參量
擴大函數變量作用域的最安全的方式是使用函數輸入和輸出參量,這樣可以傳遞變量的值。
例如,創建兩個函數 update1 和 update2,它們共享和修改輸入值。update2 可以是文件 update1.m 中的局部函數,也可以是它自己的文件 update2.m 中的函數。
示例程序1
clc;%清除命令行窗口命令
clear all;%清除工作區變量
close all;%關閉圖形窗口
X=[1:500];
Y=update1(X);
figure;
scatter(X,Y,'filled');
function y1=update1(x1)
y1=1 + update2(x1);
end
function y2=update2(x2)
y2=2 * cos(x2)+5*sin(x2);
end
運行結果
2.嵌套函數
嵌套函數可以訪問其所在的所有函數的工作區。所以,例如嵌套函數可以使用在其父函數中定義的變量(在本例中為 x):
示例程序2
function primaryFx
x=1;
fprintf("x1=%d\n",x);
nestedFx;
fprintf("x2=%d\n",x);
function nestedFx
x=x + 1;
fprintf("x3=%d\n",x);
end
end
運行結果
>> primaryFx
x1=1
x3=2
x2=2
如果父函數不使用指定變量,變量保持為嵌套函數的局部變量。例如,在該版本的 primaryFx 中,以下兩個嵌套函數擁有它們自己的不能彼此交互的 x 版本。
示例程序3
function primaryFx1
nestedFx1
nestedFx2
function nestedFx1
x=1;
fprintf("x1=%d\n",x);
end
function nestedFx2
x=2;
fprintf("x1=%d\n",x);
end
end
運行結果
>> primaryFx1
x1=1
x1=2
>>
3.持久變量
如果將函數內的變量聲明為持久變量,則從一個函數調用轉到下個函數調用時變量會保留其值。其他局部變量僅在當前函數執行期間保留它們的值。持久變量等效于其他編程語言中的靜態變量。
要使用 persistent 關鍵字聲明變量之后再使用它們。MATLAB將持久變量初始化為空矩陣[]。
例如,在名為 findSum.m 的文件中定義一個函數,先將總和值初始化為 0,然后在每次迭代時與該值相加。
示例程序4
clc;%清除命令行窗口命令
clear all;%清除工作區變量
close all;%關閉圖形窗口
for inputvalue=1:10
findSum(inputvalue);
end
function findSum(inputvalue)
persistent SUM_X
if isempty(SUM_X)
SUM_X=0;
end
SUM_X=SUM_X + inputvalue;
SUM_X
end
運行結果
SUM_X=55
>>
調用該函數時,SUM_X 的值在后續執行之間持久保留。
以下操作可清除函數的持久變量:
clear all
clear functionname
編輯函數文件
要避免清除持久變量,請使用 mlock 鎖定函數文件。
4.全局變量
全局變量是可以從函數或命令行中訪問的變量。它們擁有自己的工作區,這些工作區與基礎和函數工作區分開。
但是,全局變量具有顯著風險。例如:
如果使用全局變量,請使用 global 關鍵字聲明它們,然后從任何特定位置(函數或命令行)訪問它們。例如,在名為 falling.m 的文件中創建一個函數。
示例程序5
clc;%清除命令行窗口命令
clear all;%清除工作區變量
global GRAVITY
GRAVITY=32;
y=falling((0:.1:5)')'
function h=falling(t)
global GRAVITY
h=1/2*GRAVITY*t.^2;
end
運行結果
y=列 1 至 11
0 0.1600 0.6400 1.4400 2.5600 4.0000 5.7600 7.8400 10.2400 12.9600 16.0000
列 12 至 22
19.3600 23.0400 27.0400 31.3600 36.0000 40.9600 46.2400 51.8400 57.7600 64.0000 70.5600
列 23 至 33
77.4400 84.6400 92.1600 100.0000 108.1600 116.6400 125.4400 134.5600 144.0000 153.7600 163.8400
列 34 至 44
174.2400 184.9600 196.0000 207.3600 219.0400 231.0400 243.3600 256.0000 268.9600 282.2400 295.8400
列 45 至 51
309.7600 324.0000 338.5600 353.4400 368.6400 384.1600 400.0000
>>
通過上述兩條全局語句,可以在函數內使用在命令提示符下賦值給 GRAVITY 的值。但是,更為穩健的做法是,重新定義函數以接該值作為輸入。
5.在另一工作區中計算
通過 evalin 和 assignin 函數,可以計算字符向量中的命令或變量名稱并指定是否使用當前或基礎工作區。和全局變量一樣,這些函數存在覆蓋現有數據的風險。
assignin函數作用為指定工作區中的變量賦值
evalin函數作用在指定的工作區中計算 MATLAB 表達式
參考內容
[1]https://ww2.mathworks.cn/help/matlab/scope-variables-and-generate-names.html?s_tid=CRUX_lftnav
[2] https://ww2.mathworks.cn/help/matlab/matlab_prog/share-data-between-workspaces.html
[3] https://ww2.mathworks.cn/help/matlab/ref/evalin.html
[4]https://ww2.mathworks.cn/help/matlab/ref/assignin.html?searchHighlight=assignin&s_tid=srchtitle_support_results_1_assignin
本文內容來源于網絡,僅供參考學習,如內容、圖片有任何版權問題,請聯系處理,24小時內刪除。
作 者 | 郭志龍
編 輯 | 郭志龍
校 對 | 郭志龍
*請認真填寫需求信息,我們會在24小時內與您取得聯系。