数据分析基础之遇见Numpy

282 阅读2分钟
参与拿奖:本文已参与「新人创作礼」活动,一起开启掘金创作之路

1.基础知识

1.1 准备工作

# 安装pandas
pip install numpy
# 导入包
import numpy as np

2.array数组

2.1 创建array数组

# 直接创建
a=np.array([2,3,4])
b=np.array([3,4,5])
print(a,b)

image.png

# 使用arange创建矩阵
arr=np.arange(12).reshape(3,4)
print(arr)

image.png

# 创建全0数组
print(np.zeros(10))
# 创建全1数组
print(np.ones(10))

image.png

# 创建随机矩阵
Z = np.random.random((3,3,3))
print(Z)

image.png

# 创建对角矩阵,k表示对角的位置,-1表示向下偏移,1表示向上偏移
Z1 = np.diag(1+np.arange(4),k=-1)
Z2 = np.diag(1+np.arange(4),k=1)
Z3 = np.diag(1+np.arange(4),k=0)
print(Z1,Z2,Z3)

image.png

2.2 相关操作

# 直接转置
a=np.array([5,15,20,30])
b=a.reshape(4,1)
print(a,b)

image.png

# 矩阵转置函数
arr1=np.transpose(arr)
print(arr1)

image.png

# 方阵存在逆矩阵
arr=[[1,2],[3,4]]
arr_inv=np.linalg.inv(arr)
print(arr_inv)

image.png

# 点乘,对应位置元素相乘
print(np.dot(arr,arr_inv))

image.png

# 设置精度
np.set_printoptions(suppress=True)
print(np.dot(arr,arr_inv))

image.png

# 取对角元素
print(np.diag(arr))

image.png

# 矩阵解方程:求解Ax=b中的x
# 方程
A=np.array([[1,2],[2,3]])
# 值
b=np.array([3,5])
X=np.linalg.solve(A,b)
print(X,np.dot(A,X))

image.png

# 查看数组字节大小
Z = np.zeros((10,10))
print("%d bytes" % (Z.size * Z.itemsize))

image.png

# 切片取值
Z = np.ones((10,10))
Z[1:-1,1:-1] = 0
print(Z)

image.png

# 关于nan与inf值
print(0 * np.nan)
print(np.nan == np.nan)
print(np.inf > np.nan)
print(np.nan - np.nan)
print(np.nan in set([np.nan]))
print(0.3 == 3 * 0.1)

image.png

# 取出第99个元素的索引
print(np.unravel_index(99,(6,7,8)))


k=np.random.randint(1,100,size=(2,2,2))
ind_max=np.argmax(k)
print(k,ind_max)

# 获取最大值的索引
ind_max_src = np.unravel_index(ind_max, k.shape)
print(ind_max_src)

# 取出最大值
# 函数numpy.unravel_index(indices, dims)返回的索引值从0开始计数。
print(k[ind_max_src])

image.png

2.3 填充操作

pad填充函数
np.pad(np.array,position,mode,value)

position 行列形式,先左上方,后右下方

mode 填充样式
‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0
‘edge’——表示用边缘值填充
‘linear_ramp’——表示用边缘递减的方式填充
‘maximum’——表示最大值填充
‘mean’——表示均值填充
‘median’——表示中位数填充
‘minimum’——表示最小值填充
‘reflect’——表示对称填充
‘symmetric’——表示对称填充
‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面
Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
print(Z)

image.png

# Using fancy indexing
Z = np.ones((5,5))
Z[:, [0, -1]] = 0
Z[[0, -1], :] = 0
print(Z)

image.png

3.字符串操作

# 字符串操作
str=[chr(ord('a')+i) for i in range(5)]
str1=[i.upper() for i in str]
# 大小写
str2=np.char.upper(str)
print(str1,str2)

image.png

# 拼接
str3=[chr(ord('e')+i) for i in range(5)]
str4=np.char.add(str1,str3)
print(str4)
# 乘积
str5=np.char.multiply(['中国'],3)
print(str5)
# 拼接
str6=np.char.join(['-'],['hello','world'])
print(str6)
# 替换
str7=np.char.replace(str5,'中国','china')
print(str7)
# 去除
str8=np.char.strip(str6,'-')
print(str8)

image.png

参考资料

[1] 本节代码