NumPy
2016-08-09 11:54:44 0 举报
AI智能生成
NumPy是一个开源的Python科学计算库,用于快速处理任意维度的数组。它提供了许多高级的数值编程工具,如矩阵运算、线性代数、傅里叶变换等。NumPy的核心是ndarray对象,它是一个多维数组,具有高效的内存布局和大量的数学函数。此外,NumPy还支持广播功能,可以在不同形状的数组之间进行元素级别的操作。通过使用NumPy,程序员可以更轻松地处理大规模的数据集,并利用其丰富的功能进行数据分析、机器学习和科学计算。总之,NumPy是Python中不可或缺的库之一,为科学计算提供了强大的支持。
作者其他创作
大纲/内容
是科学计算和数据分析的基础包
ndarray,一种多维数组对象
创建ndarrayP95
data1 =[1,2,3,4,5]
arr1 = np.array(data1)
也可以用np.zeros(10),创建一个10个0组成的数组
np.arrange(15),创建一个从0到15的数组
数组创建各种函数 P96
NumPy的数据类型转换 P98
数组和标量之间的运算P99
如果自相乘,只是a1*a1,a2*a2这样
基本的索引和切片
P100
给数组的元素赋值,调出数组中的元素
切片索引
切片是要减一的,详见P100
元素递归索引 P101,先找最外面数组,然后找次外面,最终找到最里面的
冒号前面的表示从第几个开始切(包含),后面的表示切到第几个(不包含)
冒号表示选取整个轴 P103
例子
lang:python
> foo = np.arange(12)
> foo
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
> foo[:5]
array([0, 1, 2, 3, 4])
> foo[:5]=0
> foo
array([ 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 11])
> bar = foo[:5]
> bar[0] = 1024
> foo
array([1024, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 11])
注意这里,为了节省内存,对 ndarray 的切片操作获得的都是对原数组的引用,因此对该引用的更改操作都会反映到原数组上。如果你想复制出一段副本,就应当使用 .copy() 方法:
lang:python
> bar = foo[:5].copy()
> bar[:] = 1
> foo
array([1024, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 11])
多维的
lang:python
> foo = np.arange(12).reshape(3,4)
> foo
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
> foo[0,1]
1
> foo[0,::2]
array([0, 2])
lang:python
>>> foo
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> foo[0][1]
1
>>> foo[0][::2]
array([0, 2])
布尔型索引
就是判断数组里面的元素是否等于某个值,然后用TF判断
and &; or |; P105
相当于一个if条件句,比如把所有小于零的数都变成零P106
例子
lang:python
foo = np.arange(12).reshape(3,4)
bar = foo.copy()
bar%2==0
array([[ True, False, True, False],
[ True, False, True, False],
[ True, False, True, False]], dtype=bool)
foo[bar%2==0]
array([ 0, 2, 4, 6, 8, 10])
本例中一个值得注意之处在于 bar%2==0 这个表达式,在 Python 的标准语法中对一个列表和一个整型应用取余操作是非法的,你必须使用循环(如 for)遍历列表的单个元素才行。但 numpy 很贴心地通过广播解决了这个问题,吊不吊! <br />
花式索引
P107
数组转置及轴对换 P108
通用函数
各种函数P111
数学统计方法 P119
布尔型的在进行计算时会被强制转换成1或0
排序P117
读取 P118,P119
矩阵的计算P121
利用数组进行数据处理P112
where的用法P114
0 条评论
下一页