您的位置:首页 > 编程语言 > Python开发

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

2017-05-03 22:29 706 查看

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]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息