B站课链接:【Python数据分析三剑客:NumPy、Pandas与Matplotlib】 https://www.bilibili.com/video/BV1Yb4y1g7SV/?p=16&share_source=copy_web&vd_source=e883bdf439c7a2e47e9145990387a56b
014,开始使用numpy
(1),numpy介绍
(2),导入numpy库,并查看numpy版本
#数据分析三剑客 import numpy as np import pandas as pd import matplotlib.pyplot as plt
np.__version__
(3)实例:读取猫图片的数据
#我自己电脑上的图片(猫咪1.jpg),注意路径是 / ,只有一个/ #图片:其实是数字组成的,三维数组 # RGB 红Red,绿Green,蓝Blue # RGB 范围:0~255 # plt.imread : 读取图片的数据 cat = plt.imread('C:/Users/romantic/Pictures/Saved Pictures/猫咪1.jpg') cat
type(cat) # numpy.ndarray : 多维数组 # nd : n维度,多维 # array : 数组
#查看形状:三维 # (540, 960, 3) # 高度:540行 # 宽度:960列 # 3 表示的RGB(red,green,blue)的值 cat.shape
#显示图片 plt.imshow(cat) # (540, 960, 3)
# 图片:3维数据(彩色) # 2维数据(黑白) # 视频:4维数据 # (x,540, 960, 3),x表示多少张图片 #一切皆数据,一切皆矩阵(在数据中)
015,创建ndarray数组
ndarray是numpy中表示数组的重要类型
(1),使用np.array() 创建
参数为列表:[1,4,2,5,3]
I = [1,4,2,3,5,6] n = np.array(I) n
type(n) #类型 # numpy.ndarray
n.shape #形状,6表示一维数组里有6个元素 # I.shape # 列表没有shape
# 优先级:str>float>int n = np.array([3.14,2,"hello"]) n
(2),使用np的routines函数创建
(2.1)ones
n = np.ones(shape=(3,4)) #3行4列 n
n = np.ones(shape=(3,4,5),dtype=np.int16) # 3个二维数组,每个二维数组是4行5列,类型为整型 # n = np.ones(shape=(3,4,5),dtype=int) n
(2.2)zeros
n = np.zeros((5,5),dtype=np.int16) # 5行5列,类型为整型 n
(2.3)full
n = np.full(shape=(3,4),fill_value=2) # 3行4列,所有元素都为2 n
(2.4)eye
#对角线为1,其他位置为0的二维数组 #单位矩阵:主对角线都是1,其他都是0 n = np.eye(6,6,dtype=np.int8) # 6行6列,类型为整型 n
# k=2:向右偏移2个位置 n = np.eye(6,6,k=2,dtype=np.int8) n
# k=-2:向左偏移2个位置 n = np.eye(6,6,k=-2,dtype=np.int8) n
(2.5)linspace
#等差数列 # 1,3,5,7,9 n = np.linspace(0,100,num=51,dtype=np.int16) #0~2占了一份,其他2~100中间有50份 n
# endpoint=False n = np.linspace(0,100,num=51,endpoint=False)# 不包含100 n
#retstep=True : 显示步长 n = np.linspace(0,100,num=51,retstep=True) n
(2.6)arange
n = np.arange(10) # 0~9,不包含10 n
n = np.arange(2,10) # 2~9,不包含10 n
n = np.arange(2,10,2) # 2~9,不包含10,步长为2 n
(2.7)random.randint
# 随机整数,范围:[0,3] n = np.random.randint(3) n
# 随机整数,范围:[3,10] n = np.random.randint(3,10) n
# 随机整数:一维,一维数组里有6个元素 n = np.random.randint(3,10,size=6) n
# 随机整数:二维,3行4列 n = np.random.randint(3,10,size=(3,4)) n
# 随机整数:三维,也可以理解为:3个二维数组,每个二维数组是4行5列 n = np.random.randint(3,10,size=(3,4,5)) n
(2.8)random.random
n = np.random.random(size=(3,4)) n
017,ndarray常用属性
cat.shape # 三维数组 # (540, 960, 3) # 第一个维度:540 # 第二个维度:960 # 第三个维度:3 # 有几个数字就表示几维
cat.ndim # 维度
cat.size # 总数据量 540*960*3
cat.dtype # 元素类型 # uint8:无符号整数
018,索引操作(以下代码直接截图了)
根据索引修改数据
019,切片操作
一维与列表完全一致,多维同理
020,翻转操作
021,数组变形reshape
使用reshape函数
022,数组的级联合并
(22.1)np.concatenate()
- 参数是列表或元组
- 级联的数组维度必须相同
- 可通过axis参数改变级联的方向
(22.2)np.hstack 与 np.vstack
- 水平级联与垂直级联
023,数组的拆分/切分/分割
025,聚合函数
(25.1)np.sum 和 np.nansum (nan:not a number)
- nan:数值类型,not a number:不是一个正常的数值,表示空
- np.nan:float类型
029,数组的快速排序
030,文件IO操作
(30.1)保存数组
- save:保存ndarray到一个npy文件
- savez:将多个array保存到一个npz文件中
生成的文件
(30.2)读取数组
(30.3)csv,txt文件的读写操作
031,练习题讲解1
(31.1)创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
(31.2)创建一个元素为从10到49的ndarray对象
(31.3)将第2题的所有元素位置反转
(31.4)使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素
(31.5)创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0
第1种方法
第2种方法
(31.6)创建一个每一行都是从0到4的5*5矩阵
032,练习题讲解2
(32.1)给定一个4维矩阵,如何得到最后两维的和?
(32.2)给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数组
(32.3)给定一个二维矩阵,如何交换其中两行的元素?
(32.4)矩阵的每一行的元素都减去该行的平均值
(32.5)打印出如下矩阵(要求使用np.zeros创建8*8的矩阵)
标签:数据分析,10,Python,random,数组,np,numpy,ndarray From: https://www.cnblogs.com/romantichuaner/p/18104031