持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
1.Numpy功能简介及运行环境
- ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
- 用于对整组数据进行快速运算的标准数学函数
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
- 线性代数、随机数生成以及傅里叶变换功能
- 用于集成由c/c++等语言编写的API
本篇采用numpy1.23.3,并且运行在jupyter note上。
Numpy的nadrray是一种多维数组对象,我们可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。例如:
import numpy as np
data=np.random.randn(2,5)#随机产生数字2行5列格式
data
data*10,data+data,data-2 #分别进行乘10,加法,减法运算
2.ndarray
2.1创建ndarray
创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。例如:
data=[1,2,3,4,5,6,7,8]
arr=np.array(data)
arr
由于Numpy关注的是数值计算,因此,如果没有特别指定,数据类型基本都是float64。
| 函数 | 说明 |
|---|---|
| ones,ones_like | 根据指定的形状和dtype创建一个全1数组。one_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组 |
| zero,zeros_like | 类似于ones和ones_like,只不过产生的是全0数组而已 |
| empty,empty_like | 创建新数组,只分配内存空间但不填充任何值 |
| arange | 类似于内置的range,但返回的是一个ndarray而不是列表 |
2.2ndarray的数据类型
arr1=np.array([1,2,3],dtype=np.float64)
arr2=np.array([1,2,3],dtype=np.float32)
arr1.dtype,arr2.dtype
我们也可以使用astype方法来进行数据类型的转换。比如将字符型转换成浮点型。
a=np.array(['1.987','2.2','4.3'],dtype=np.string_)
a
b=a.astype(np.float64)
b
2.3numpy数组的运算
数组很重要,我们不用编写循环即可对数据执行批量运算。例如:
arr=np.array([[1,2,3],[4,5,6]])
arr, arr*arr, arr-arr
大小相等的数组之间的任何算术运算都会将运算应用到元素级。
2.4 利用数组进行数据处理
这里我们假设想要在一组值上计算函数sqrt(x²+y²).np.meshgrid函数接受两个一维数组,并产生两个二维矩阵。
a=np.arange(-10,10,0.02)#生成1000个数值
xs,ys=np.meshgrid(a,a)
z=np.sqrt(xs**2+ys**2)
z
我们也可以将其可视化。
import matplotlib.pyplot as plt
plt.imshow(z,cmap=plt.cm.gray);plt.colorbar()
2.5 将条件逻辑表述为数组运算
比如说,我们想将一个矩阵中的数据,正数替换为2,负数替换为-1,那么我们利用np.where会非常便捷。
arr=np.random.rand(5,5)
arr=np.where(arr>0,2,-1)
arr
可以知道,全部都是整数。
2.6 用于数组的文件输入输出
numpy能够读写磁盘上的文本数据或二进制数据,其中np.load和np.save是读写磁盘数字数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的。
arr=np.arange(100)
np.save(r'E:\360MoveData\Users\12079\Desktop\study\some_array',arr)
np.load(r'E:\360MoveData\Users\12079\Desktop\study\some_array.npy')
这里就可以通过np.save进行保存文件,通过使用np.load进行文件的读取