吴裕雄数据挖掘与分析案例实战(3)——python数值计算⼯
具:Numpy
# 导⼊模块,并重命名为np
import numpy as np
# 单个列表创建⼀维数组
arr1 = np.array([3,10,8,7,34,11,28,72])
print('⼀维数组:\n',arr1)
# ⼀维数组元素的获取
print(arr1[[2,3,5,7]])
# 嵌套元组创建⼆维数组
arr2 = np.array(((8.5,6,4.1,2,0.7),(1.5,3,5.4,7.3,9),(3.2,3,3.8,3,3),(11.2,13.4,15.6,17.8,19)))
print('⼆维数组:\n',arr2)
# ⼆维数组元素的获取
# 第2⾏第3列元素
print(arr2[1,2])
# 第3⾏所有元素
print(arr2[2,:])
# 第2列所有元素
print(arr2[:,1])
# 第2⾄4⾏,2⾄5⾏
print(arr2[1:4,1:5])
# 第⼀⾏、最后⼀⾏和第⼆列、第四列构成的数组
print(arr2[[0,-1],[1,3]])
# 第⼀⾏、最后⼀⾏和第⼀列、第三列、第四列构成的数组
print(arr2[[0,-1,0],[1,2,3]])
# 第⼀⾏、最后⼀⾏和第⼆列、第四列构成的数组
print(arr2[np.ix_([0,-1],[1,3])])
# 第⼀⾏、最后⼀⾏和第⼀列、第三列、第四列构成的数组
print(arr2[np.ix_([0,-1],[1,2,3])])
# 读⼊数据
stu_score = np.genfromtxt(fname = r'F:\\python_Data_analysis_and_mining\\04\\',delimiter='\t',skip_header=1)
# 查看数据结构
print(type(stu_score))
# 查看数据维数
print(stu_score.ndim)
# 查看数据⾏列数
print(stu_score.shape)
# 查看数组元素的数据类型
print(stu_score.dtype)
# 查看数组元素个数
print(stu_score.size)
arr3 = np.array([[1,5,7],[3,6,1],[2,4,8],[5,8,9],[1,5,9],[8,5,2]])
# 数组的⾏列数
print(arr3.shape)
# 使⽤reshape⽅法更改数组的形状
shape(2,9))
# 打印数组arr3的⾏列数
print(arr3.shape)
arr4 = np.array([[1,10,100],[2,20,200],[3,30,300]])
print('原数组:\n',arr4)
# 默认排序降维
print('数组降维:\n',arr4.ravel())
print(arr4.flatten())
shape(-1))
# 改变排序模式的降维
print(arr4.ravel(order = 'F'))
print(arr4.flatten(order = 'F'))
shape(-1, order = 'F'))
# 更改预览值
arr4.flatten()[0] = 2000
print('flatten⽅法:\n',arr4)
arr4.ravel()[1] = 1000
print('ravel⽅法:\n',arr4)
print('reshape⽅法:\n',arr4)
arr4 = np.array([[1,10,100],[2,20,200],[3,30,300]])
arr5 = np.array([1,2,3])
print(arr4)
print(arr5)
print('vstack纵向合并数组:\n',np.vstack([arr4,arr5]))
print('row_stack纵向合并数组:\n',np.row_stack([arr4,arr5]))numpy教程pdf电子书
arr6 = np.array([[5],[15],[25]])
print('hstack横向合并数组:\n',np.hstack([arr4,arr6]))
print('column_stack横向合并数组:\n',np.column_stack([arr4,arr6])) print(arr4)
print('垂直⽅向计算数组的和:\n',np.sum(arr4,axis = 0))
print('⽔平⽅向计算数组的和:\n',np.sum(arr4, axis = 1))
# 加法运算
math = np.array([98,83,86,92,67,82])
english = np.array([68,74,66,82,75,89])
chinese = np.array([92,83,76,85,87,77])
tot_symbol = math+english+chinese
tot_fun = np.add(np.add(math,english),chinese) print('符号加法:\n',tot_symbol)
print('函数加法:\n',tot_fun)
# 除法运算
height = np.array([165,177,158,169,173])
weight = np.array([62,73,59,72,80])
BMI_symbol = weight/(height/100)**2
BMI_fun = np.divide(weight,np.divide(height,100)**2) print('符号除法:\n',BMI_symbol)
print('函数除法:\n',BMI_fun)
arr7 = np.array([[1,2,10],[10,8,3],[7,6,5]])
arr8 = np.array([[2,2,2],[3,3,3],[4,4,4]])
print('数组arr7:\n',arr7)
print('数组arr8:\n',arr8)
# 求余数
print('计算余数:\n',arr7 % arr8)
# 求整除
print('计算整除:\n',arr7 // arr8)
# 求指数
print('计算指数:\n',arr7 ** arr8)
df(arr7/arr8))
# 整除部分
df(arr7/arr8)[1])
arr7 = np.array([[1,2,10],[10,8,3],[7,6,5]])
arr8 = np.array([[2,2,2],[3,3,3],[4,4,4]])
print('数组arr7:\n',arr7)
print('数组arr8:\n',arr8)
# 取⼦集
# 从arr7中取出arr7⼤于arr8的所有元素
print('满⾜条件的⼆维数组元素获取:\n',arr7[arr7>arr8]) # 从arr9中取出⼤于10的元素
arr9 = np.array([3,10,23,7,16,9,17,22,4,8,15])
print('满⾜条件的⼀维数组元素获取:\n',arr9[arr9>10])
# 判断操作
# 将arr7中⼤于7的元素改成5,其余的不变
print('⼆维数组的条件操作:\n',np.where(arr7>7,5,arr7)) # 将arr9中⼤于10 的元素改为1,否则改为0
print('⼀维数组的条件操作:\n',np.where(arr9>10,1,0))
# 各输⼊数组维度⼀致,对应维度值相等
arr10 = np.arange(12).reshape(3,4)
print(arr10)
arr11 = np.arange(101,113).reshape(3,4)
print(arr11)
print('3×4的⼆维矩阵运算:\n',arr10 + arr11)
# 各输⼊数组维度不⼀致,对应维度值相等
arr12 = np.arange(60).reshape(5,4,3)
print(arr12)
arr10 = np.arange(12).reshape(4,3)
print(arr10)
print('维数不⼀致,但末尾的维度值⼀致:\n',arr12 + arr10)
# 各输⼊数组维度不⼀致,对应维度值不相等,但其中有⼀个为1
arr12 = np.arange(60).reshape(5,4,3)
print(arr12)
arr13 = np.arange(4).reshape(4,1)
print(arr13)
print('维数不⼀致,维度值也不⼀致,但维度值⾄少⼀个为1:\n',arr12 + arr13) # 加1补齐
arr14 = np.array([5,15,25])
print('arr14的维度⾃动补齐为(1,3):\n',arr10 + arr14)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论