Heim >Backend-Entwicklung >Python-Tutorial >Python-Numpy-Bibliothek

Python-Numpy-Bibliothek

巴扎黑
巴扎黑Original
2017-06-23 15:32:272364Durchsuche

python-numpy

CSV-Dateien schreiben und darauf zugreifen

CSV-Dateien schreiben

CSV (Comma-Separated Value, durch Kommas getrennter Wert) ist ein gängiges Dateiformat Wird zum Speichern von Massendaten verwendet.

CSV-Datei schreiben

np.savetxt(frame, array, fmt='%.18e', delimiter=None)
• frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
• array : 存入文件的数组
• fmt : 写入文件的格式,例如:%d %.2f %.18e
• delimiter : 分割字符串,默认是任何空格

Beispiel:

>>> a = np.arange(100).reshape(5,20)>>> np.savetxt('a.csv',a,fmt='%d',delimiter=',')

Die resultierende Datei sieht so aus

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99

Parameter ändern, als Gleitkommazahl schreiben

>>> a = np.arange(100).reshape(5,20)>>> np.savetxt('a.csv',a,fmt='%.1f',delimiter=',')
0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0
20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0
40.0,41.0,42.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0
60.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,69.0,70.0,71.0,72.0,73.0,74.0,75.0,76.0,77.0,78.0,79.0
80.0,81.0,82.0,83.0,84.0,85.0,86.0,87.0,88.0,89.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0

CSV-Datei lesen

CSV-Datei lesen

np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
• frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
• dtype : 数据类型,可选
• delimiter : 分割字符串,默认是任何空格
• unpack : 如果True,读入属性将分别写入不同变量

Beispiel:

>>> b = np.loadtxt('a.csv',delimiter=',')>>> b
array([[  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,         11.,  12.,  13.,  14.,  15.,  16.,  17.,  18.,  19.],
       [ 20.,  21.,  22.,  23.,  24.,  25.,  26.,  27.,  28.,  29.,  30.,         31.,  32.,  33.,  34.,  35.,  36.,  37.,  38.,  39.],
       [ 40.,  41.,  42.,  43.,  44.,  45.,  46.,  47.,  48.,  49.,  50.,         51.,  52.,  53.,  54.,  55.,  56.,  57.,  58.,  59.],
       [ 60.,  61.,  62.,  63.,  64.,  65.,  66.,  67.,  68.,  69.,  70.,         71.,  72.,  73.,  74.,  75.,  76.,  77.,  78.,  79.],
       [ 80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.,  88.,  89.,  90.,         91.,  92.,  93.,  94.,  95.,  96.,  97.,  98.,  99.]])>>> b = np.loadtxt('a.csv',dtype=np.int,delimiter=',')>>> b
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19],
       [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,57, 58, 59],
       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,77, 78, 79],
       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,97, 98, 99]])

CSV kann nur eindimensionale und zweidimensionale Arrays effektiv speichern
np.savetxt() np.loadtxt() kann nur effektiv auf eindimensionale und zweidimensionale Arrays zugreifen dimensionale Arrays

Zugriff auf mehrdimensionale Daten

Schreiben mehrdimensionaler Daten

a.tofile(frame, sep='', format='%s')
• frame : 文件、字符串
• sep : 数据分割字符串,如果是空串,写入文件为二进制
• format : 写入数据的格式

Beispiel;

>>> a = np.arange(100).reshape(5,10,2)>>> a.tofile("a.dat",sep=',',format='%d')

a. Inhalt von dat:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99

Wenn das Trennzeichen nicht angegeben wird, wird eine Binärdatei generiert und kann nicht mit einem Texteditor gelesen werden.

Mehrdimensionale Daten lesen

np.fromfile(frame, dtype=float, count=‐1, sep='')
• frame : 文件、字符串
• dtype : 读取的数据类型
• count : 读入元素个数,‐1表示读入整个文件
• sep : 数据分割字符串,如果是空串,写入文件为二进制

Numpys Zufallszahlenfunktion

NumPys Zufallsunterbibliothek
np.random.*

函数 说明
rand(d0,d1,...,dn) 根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布
randn(d0,d1,...,dn) 根据d0-dn创建随机数数组,标准正态分布
randint(low[,high,shape]) 根据shape创建随机整数或整数数组,范围是[low,high)
seed(s) 随机数种子,s是给定的种子值
shuffle(a) 根据数组a的第1轴进行随排列,改变数组a
permutation(a) 根据数组a的第1轴产生一个新的乱序数组,不改变数组a
choice(a[,size,replace,p]) 从一维数组a中以概率p抽取元素,形成size形状新数组replace表示是否可能重用元素,默认为False
uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size为形状
normal(loc,scale,size) 产生具有正态分布的数组,loc为均值,scale标准差,size为形状
poisson(lam,size) 产生具有泊松分布的数组,lam为随机事件发生率,size为形状

Statistische Funktionen von Numpy

Statistische Funktionen, die direkt von NumPy bereitgestellt werden
np.*

函数 说明
sum(a,axis=None) 根据给定axis计算数组a相关元素之和,axis整数或元组
mean(a,axis=None) 根据给定axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None) 根据给定axis计算数组a相关元素的加权平均值
std(a,axis=None) 根据给定轴axis计算数组a相关元素的标准差
var(a,axis = None) 根据给定轴axis计算数组a相关元素的方差
min(a) max(a) 计算数组a中元素的最小值,最大值
argmin(a) argmax(a) 计算数组a中元素的最小值,最大值的降一维后下标
unravel_index(index,shape) 根据shape将一维下标index转换成多维下标
ptp(a) 计算数组a中元素最大值和最小值的差
median(a) 计算数组a中元素的中位数(中值)

axis=None ist der Standardparameter statistischer Funktionen

Numpys Gradientenfunktion

函数 说明
np.gradient(f) 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

Steigung: die Änderungsrate zwischen aufeinanderfolgenden Werten, also die Steigung
Die Y-Achsenwerte, die drei aufeinanderfolgenden X-Koordinaten auf der XY-Koordinatenachse entsprechen: a, b, c, wobei der Gradient von b ist: (c‐a)/2

>>> a = np.random.randint(0,20,5)>>> np.gradient(a)
array([  9. ,  -0.5,  -2. ,  -3. , -12. ])


Das obige ist der detaillierte Inhalt vonPython-Numpy-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn