(点击上方快速关注并设置为星标,一起学Python)
翻译 | 石头
来源 | Machine Learning Plus
Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pandas也是基于numpy构建的,机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。
目录
1. 如何构建numpy数组
2. 如何观察数组属性的大小和形状(shape)
3. 如何从数组提取特定的项
4. 如何从现有的数组定义新数组
5. 多维数组的重构(reshaping)和扁平(flattening)
6. 如何通过numpy生成序列数(sequences),重复数(repetitions)和随机数(random)
7. 小结
1. 如何构建numpy数组
构建numpy数组的方法很多,比较常用的方法是用np.array函数对列表进行转化。
# 通过列表创建一维数组import numpy as nplist1 = [0,1,2,3,4]arr1d = np.array(list1)#打印数组和类型print(type(arr1d))arr1d
[0 1 2 3 4]
数组和列表最关键的区别是:数组是基于向量化操作的,列表不是,我们在实际项目中处理的数据一般是矩阵结构,对该数据以行向量或列向量的形式进行计算,向量计算是基于数组实现的,因此数组比列表的应用更广。
函数可以应用到数组的每一项,列表不行。
比如,不可以对列表的每一项数据都加2,这是错误的。
list1 + 2 # 错误
可以对数组的某一项数据都加2
# Add 2 to each element of arr1darr1d + 2#> array([2, 3, 4, 5, 6])
另一个区别是已经定义的numpy数组不可以增加数组大小,只能通过定义另一个数组来实现,但是列表可以增加大小。
然而,numpy有更多的优势,让我们一起来发现。
numpy可以通过列表中的列表来构建二维数组。
# Create a 2d array from a list of listslist2 = [[0,1,2], [3,4,5], [6,7,8]]arr2d = np.array(list2)arr2d#> array([[0, 1, 2],#> [3, 4, 5],#> [6, 7, 8]])
你也可以通过dtype参数指定数组的类型,一些最常用的numpy类型是:'float','int','bool','str'和'object'。
# Create a float 2d arrayarr2d_f = np.array(list2, dtype='float')arr2d_f#> array([[ 0., 1., 2.],#> [ 3., 4., 5.],#> [ 6., 7., 8.]])
输出结果的小数点表示float类型,你也可以通过 astype方法转换成不同的类型。
# 转换成‘int’类型arr2d_f.astype('int')#> array([[0, 1, 2],#> [3, 4, 5],#> [6, 7, 8]])
# 先转换‘int’类型,再转换‘str’类型arr2d_f.astype('int').astype('str')#> array([['0', '1', '2'],#> ['3', '4', '5'],#> ['6', '7', '8']],#> dtype='U21')
另一个区