【学习笔记】python数据分析-Numpy
发布时间
阅读量:
阅读量
目录
-
ndarray多维数组
-
- 创建一个 ndarray数组
- ndarray数组的属性
- 数组变换
- 数组元素迭代
- 数组的索引
- 数组的切片
-
数组的运算
-
- 数组标量运算
- 通用算术函数
- 条件逻辑运算
- 统计运算
- 数组排序
- 集合运算
ndarray多维数组
通常来说,ndarry是一个通用的同构数据容器(即其中的所有元素都需要是相同的类型)。创建好一个ndarray数组时,同时会在内存中存储ndarray的shape和dtype。shape是ndarray维度大小的元组,dtype是解释说明ndarray数据类型的对象。
创建一个 ndarray数组
只需调用 NumPy 的 array 函数即可:
import numpy as np
data1= [[5, 2, 3, 4, 9], [5, 7, 9, 20, 18]]
arr1= np.array(data1)
print(arr1)
运行结果如下图:

除了np.array创建数组外,numpy还内置一些特殊数组
,如arange函数:
data2=np.arange(10)
print(data2)
运行结果如下:

,如random函数:
arr1=np.random.randint(100,200,size=(5,4))
#生产100~200范围内的随机整数,size为5行4列
print(arr1)
运行结果如下:

ndarray数组的属性
| 属性 | 解释 |
|---|---|
| arr.ndim | 数据轴的个数 |
| arr.shape | 数组的维度 |
| arr.size | 数组内元素的总个数 |
| arr.dtype | 数组内元素的数据类型 |
| arr.itemsize | 数组内每个元素的字节大小 |
其中数组中元素的数据类型dtype很有多,如:
(float)浮点数
(int)整数
(complex)复数
(bool)布尔值
(string)字符串
(object )Python对象
数据类型转换用 astype()函数:
data2=np.arange(10)
print(data2)
arr1=data2.astype(float)
print(arr1)
运行结果如下:

数组变换
| 函数 | 说明 |
|---|---|
| arr.reshape() | 改变数据的维度 |
| arr.ravel() | 数据散开成一维 |
| np.concatenate() | 数组合并,axis参数指定合并轴 |
| arr.transpose() | 数组转置 |
import numpy as np
'''数组重塑与散开'''
arr=np.arange(9)
arr1=arr.reshape((3,3))
#reshape函数的参数为新维度的元组
print(arr1)
print(arr1.ravel())
#数组重塑不会改变原数组
'''数组合并'''
arr2=np.arange(12).reshape((3,4))
print(np.concatenate([arr1,arr2],axis=1))
'''数组转置'''
print(arr2)
print(np.transpose(arr2))
运行结果如下:

数组元素迭代
numpy.ndarray.flat 是一个数组元素迭代器,实例如下:
arr1=np.random.randint(100,200,size=(2,2))
print(arr1)
for element in arr1.flat:
print(element)
运行结果如下:

数组的索引
数组索引从0开始
数组的切片和索引返回都是原始数组的视图
arr1=np.random.randint(100,200,size=(3,4))
print(arr1)
print(arr1[2,3])
#索引表示取arr数组的第3行,第4列对应的元素
运行结果如下:
数组的切片
一维数组的切片类似python的列表的切片,实例如下:
arr1=np.arange(10)
print(arr1)
print(arr1[2:5])
#与列表切片一样,左闭右开
运行结果如下:

高维数组的切片,实例如下:
arr1=np.arange(12).reshape(4,3)
print(arr1)
print(arr1[:,1])
print(arr1[:,1:2])
#传入参数是整数和切片的区别,只有使用冒号才会选取整个轴
运行结果如下:

数组的运算
数组之所以强大且重要的原因是,其不需要通过循环就可以完成批量计算
数组标量运算
arr1=np.arange(3)
print(arr1)
print(arr1*10)
print(arr1*arr1)
运行结果如下:

通用算术函数
| 函数 | 输入 |
|---|---|
| np.abs | 求一数组绝对值 |
| np.square | 求一数组平方 |
| np.add | 求两数值和 |
| np.minimum | 求两数组最小值 |
| np.modf | 分离数组的整数和小数部分 |
条件逻辑运算
arr=np.random.randn(4,4)
print(arr)
arr1=np.where(arr>0,1,-1)
#arr>0是判断条件,true选择第二个参数即1,false选择第三个参数即-1
#数据分析中常用where函数来对数组进行处理
print(arr1)
运行结果如下:

统计运算
arr=np.arange(9).reshape(3,3)
print(arr.sum())
#sum()用于求和
print(arr.mean())
#mean()用于求算术平均数
print(arr.cumsum(1))
#cumsum(1)表示按列方向累加,等同于axis=1
print(arr.cumprod(0))
#cumprod(0)表示按行方向累积,等同于axis=0
运行结果如下:

数组排序
arr=np.random.randn(5,3)
print(arr)
arr.sort()
print(arr)
#arr.sort()是对原数组arr排序,但不会返回值
运行结果如下:

集合运算
arr=np.array([2,3,3,2,8,1])
print(arr)
print(np.unique(arr))
#数据分析中常用unique找出数组中的唯一值
运行结果如下:

写在最后:本文记录《从零开始学python数据分析》-罗攀编著 的个人学习笔记,供linlin和大家查阅,有误请指正。
全部评论 (0)
还没有任何评论哟~
