「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」。
前几日我们已经开始使用python的库了,今天我们来学习Numpy.Numpy是python数值计算非常重要的包,其他许多python科学计算的包都是以它为基础,比如:Scipy、Matplotlib、Pandas等,所以Numpy的重要性不言而喻。
首先我们创建一个ndarray数据类型,前面我们是在dataframe中获取的,其实我们也可以从list里面得到。还记得吗,ndarray数据类型底层都是C语言速度很快的~
array1 = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
array2 = np.array([10, 11, 12, 13])
array1使用一个二维的list生成一个二维的ndarray,而array2则是创建一个1维的ndarray。
下面我们说说常用的功能,查看array1和array2的形状,是怎样的,我们用到的是shape,具体使用方法如下:
array1.shape array2.shape
如果需要打印直接print即可。而查看维度,用的是ndim
array1.ndim
提示一下大家,在创建ndarray的时候,可以选择用什么样的数据类型哦!
下面,我们来说常用的打印数组。当你打印一个数组的时候,numpy类似嵌套列表的形式显示它,它会一从左到右,从顶向下们每个切片通过一个空行与下一个隔开。
Python中的and、or、not等关键字无法被重载,因此Numpy提供了额外的函数:np.logical_and、np.logical_not、np.logical_or、np.logical_xor
a = np.arange(6)
b = np.arange(5,-1,-1)
print(a)
print(b)
print(np.logical_or(a==b,a>b))
执行的效果如下,大家可以试试and not xor,这里我就给大家演示or的用法。
数组的运算
数组在进行矢量化运算的时候,要求数组的形状是相等的,当形状不等的数组执行运算,会默认对数组进行扩展,我们下面试试这一机制:
arr1 = np.array([[1],[2],[3]])
arr1.shape
arr2 = np.array([1,2])
arr2.shape
arr1 + arr2
上面arr1是三行一列,而arr2是一行两列,它们合起来就变成了三行两列,这个我们称为广播机制。