【学习笔记】python数据分析-Numpy

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和大家查阅,有误请指正。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页