B站14天数据分析笔记2次课Numpy

#包导入方法:
import numpy
import numpy as np
from numpy import *

    

# 数组与列表的差别
#数组:元素类型dtype相同 否则会强制类型转换
a=[1,2,3,4,5]
[x+1 for x in a]
b=[2,3,4,5,6,7]
[c+d for (c,d) in zip(a,b)]#压缩成元组数组

#数组的计算
a=np.array([1,2,3,4]) # print array([1, 2, 3, 4])
a+1 #print array([2, 3, 4, 5])

#数组初始化
l=[1,2,3,4]
a=np.array(l) #列表生成数组 print array([1, 2, 3, 4])
np.zeros(10) #生成0数组 都是浮点数 array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.ones(10,dtype='int') #同上 设置类型为int
a.fill(2.5) #将数组元素都填为2.5 如果原类型为整数 则2.5->2
a=a.astype('float') #强制类型转换

#随机数数组
a=np.arange(1,11,2) #起点 终点 步伐 array([1, 3, 5, 7, 9])
a=np.linspace(1,10,10) #起点 终点 等差数列的元素个数 array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
a=np.random.rand(5) #0-1的5个随机数
a=np.random.randn(5)#正态分布5个随机数
a=np.random.randint(1,10,6) #1-10 6个随机数

#数组属性
type(a) #numpy.ndarray n维数组
a.dtype #元素的数据类型dtype('int32')
a.shape #形状/行列 (6,)
a.ndim #维度 1

#数组索引
a=np.array([0,1,2,3,4,5])
a[0]

#数组切片与列表相同
a[1:3]

#多维数组
a=np.array([[0,1,2,3],[1,2,3,4]])
a.shape #(2, 4)
a.ndim #2

#索引
a[1,2] #第二行 第三列
a[1,] #索引为1的第二行 的所有列
a[:,1] #第二行/第二列的所有行

#切片 数组引用机制 使用同一块内存 
# 列表直接copy备份

a=np.array([1,2,3,4])

b=copy(a[1:3])
b[1]=9999
a #不变

b=a[1:3]
b[1]=9999 
a #array([   1,    2, 9999,    4])

a=[1,2,3,4]
b=a[1:3]
b[1]=9999
a #[1, 2, 3, 4]

#花式索引
a=np.arange(0,50,10) #左闭右开 和随机数(闭区间)不同
index=[1,2,-1]
y=a[index] 
y #array([10, 20, 40])

#或者布尔值
mask=np.array([0,0,2,0,1],dtype=bool)#规模要与原数组相同
z=a[mask]
z # array([20, 40])

#where语句
np.where(a>10) #(array([2, 3, 4], dtype=int64),)
np.where(True)              #返回索引值元组 默认返回>0的数组索引 (array([0], dtype=int64),)

#数组类型
a=np.array([1,5,2,3],dtype=float) #初始化类型
np.asarray(a,dtype=int)#强制类型转换 原数组不变
b=a.astype(int) #原数组不变 返回新类型的数组

#常用数组操作
np.sort(a) #从小到大
np.argsort(a) #返回从小到大排列后的原数组的索引
a[np.argsort(a)] 

np.max(a)
np.sum(a)
np.std(a) #标准差
np.cov(a,b) #相关系数矩阵

#矩阵操作
a=np.array([1,5,2,3,5,6],dtype=float)
a.shape=2,3 #将一维数组变为两行三列 行操作
a=np.array([1,5,2,3,5,6],dtype=float)
a.reshape(2,3) #原数组不变 返回新数组
a.T #转置
a.transpose() #转置 a不变 返回新数组

#数组之间的操作
#concantenate((a0,a1,a2,...,aN),axis=0) #n维数组??
x=np.array([1,2,-3,4,5])
y=np.array([11,22,33,44,55])
z=np.array((x,y))
z
np.vstack((x,y)) #按列进行堆叠 x与y堆成一列 x作为一行 y作为第二行
np.hstack((x,y)) #按行堆叠 把上面的转置一下 x作为前5列 y作为后五列
np.dstack((x,y)) #转化成三维

#内置函数
np.abs(x)
np.exp(x)#??e的x次幂
np.median(x) #求中值
np.cumsum(x) # 每个元素等于前面所有元素之和
原文地址:https://www.cnblogs.com/most-silence/p/15495373.html