Python基础教程学习第八日:Numpy(2)

xiaoxiao2021-02-27  598

Numpy

ufunc

一个通用的函数,或者 ufunc ,是一个在ndarrays的数据上进行基于元素(element-wise)的操作的函数。

用数组来表示逻辑

>>> xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) >>> yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) >>> cond = np.array([True, False, True, True, False]) >>> result = np.where(cond, xarr, yarr) #true时读取xarr,false时读取yarr >>> result array([ 1.1, 2.2, 1.3, 1.4, 2.5]) >>> arr = randn(4, 4) >>> arr array([[ 0.6372, 2.2043, 1.7904, 0.0752], [-1.5926, -1.1536, 0.4413, 0.3483], [-0.1798, 0.3299, 0.7827, -0.7585], [ 0.5857, 0.1619, 1.3583, -1.3865]]) >>> np.where(arr > 0, 2, arr) # 仅设置正值为 2 array([[ 2. , 2. , 2. , 2. ], [-1.5926, -1.1536, 2. , 2. ], [-0.1798, 2. , 2. , -0.7585], [ 2. , 2. , 2. , -1.3865]])

数组和统计方法

>>> arr = np.random.randn(5, 4) # 正态分布数据 >>> arr.mean() 0.062814911084854597 >>> np.mean(arr) 0.062814911084854597 I>>> arr.sum() 1.2562982216970919 #也可以有一个可选的 axis 参数,它对给定坐标轴进行统计,结果数组将会减少一个维度 >>> arr.mean(axis=1) array([-1.2833, 0.2844, 0.6574, 0.6743, -0.0187]) >>> arr.sum(0) array([-3.1003, -1.6189, 1.4044, 4.5712])

数组的排序

NumPy数组也可以使用 sort 方法就地排序,多维数组可以通过传递一个坐标轴数到 sort ,对一维截面上的数据进行就地排序。

>>> arr = randn(5, 3) >>> arr array([[-0.7139, -1.6331, -0.4959], [ 0.8236, -1.3132, -0.1935], [-1.6748, 3.0336, -0.863 ], [-0.3161, 0.5362, -2.468 ], [ 0.9058, 1.1184, -1.0516]]) >>> arr.sort(1) >>> arr array([[-1.6331, -0.7139, -0.4959], [-1.3132, -0.1935, 0.8236], [-1.6748, -0.863 , 3.0336], [-2.468 , -0.3161, 0.5362], [-1.0516, 0.9058, 1.1184]])

数组的集合操作

数组文件的输入和输出

p.save 和 np.load 能有效的保存和加载磁盘数据。数组默认保存为未经过压缩的原始二进制数据,文件扩展名为 .npy 。

>>> arr = np.arange(10) >>> np.save('some_array', arr) >>> np.load('some_array.npy') array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

可以使用 np.savez 并以关键字参数传递数组来保存多个数组到一个zip的归档文件中。

np.loadtxt 可以用来加载文本文件,函数有许多选项,允许你指定不同的分割符,特定列的转换函数,跳过某些行,和其它的事情。 例如:

>>> !cat array_ex.txt 0.580052,0.186730,1.040717,1.134411 0.194163,-0.636917,-0.938659,0.124094 -0.126410,0.268607,-0.695724,0.047428 -1.484413,0.004176,-0.744203,0.005487 2.302869,0.200131,1.670238,-1.881090 -0.193230,1.047233,0.482803,0.960334 >>> arr = np.loadtxt('array_ex.txt', delimiter=',') #以逗号为分隔符来分割文件 >>> arr array([[ 0.5801, 0.1867, 1.0407, 1.1344], [ 0.1942, -0.6369, -0.9387, 0.1241], [-0.1264, 0.2686, -0.6957, 0.0474], [-1.4844, 0.0042, -0.7442, 0.0055], [ 2.3029, 0.2001, 1.6702, -1.8811], [-0.1932, 1.0472, 0.4828, 0.9603]])
转载请注明原文地址: https://www.6miu.com/read-377.html

最新回复(0)