NumPY实验练习
前言:Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环
1.创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
代码:
A:
import
numpy as np
#创建数组
data1=np.zeros((1,10))
#打印数组
print(
data1 )
print(data1.size)
#给数组的第五个元素赋值为1
data1[0][4]=1
print(data1)
print(data1.size)
截图:
B:
import
numpy as np
#创建数组
data2=np.array([0,0,0,0,0,0,0,0,0,0])
#打印数组
print(
data2 )
print(data2.size)
#给数组的第五个元素赋值
data2[4]=1
print(data2)
print(data2.size)
如图:
2.创建一个元素为从10到49的ndarray对象
代码:
import
numpy as np
data3=np.array([10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49])
print(
data3)
print(data3.size)
如图:
3.创建一个4x4的二维数组,并输出数组元素类型
代码:
import
numpy as np
#创建4x4的二维数组
data4=np.ones((4,4))
print(
data4 )
print(data4.size)
print(“输出数组元素的属性值:”)
#创建表示数据类型的对象,然后获取它的name属性,就是我们想要的数组元素类型
#由ones等方法创建的数组元素类型默认为float64
如图:
4.创建一个数组,该数组可以完成将坐标位置为(0,1,3)到(3,0,1)的转置
transpose()进行的操作其实是将各个维度重置,例如原来(2,3,4)对应的是(0,1,2)。使用transpose(1,0,2)后,各个维度大小变为(3,2,4),其实就是将第一维和第二维互换。
代码:
import
numpy as np
#numpy.arrange(各维度乘积和).reshape(x,y,z)可以快速创建你想要的数组
data4=np.arange(36).reshape(2,3,6)
print(‘转换前数组为:’)
print(data4)
data4=data4.transpose(2,0,1)
print(‘转换后数组为:’)
print(data4)
如图:
5.将4题中的数据类型转换为float64
代码:
data4=np.arange(36).reshape(2,3,6)
print(‘转换前数组为:’)
print(data4)
data4=np.float64(data4)
print(‘转换后数组为’)
print(data4)
如图:
6.参照课件分别完成数组间的矢量运算.广播运算.标量运算
代码:
#矢量运算
#创建两个数组
data1=np.arange(1,6,1)
data2=np.arange(-2,3,1)
print(“打印数组:”)
print(data1)
print(data2)
data3=data1+data2
print(“矢量相加为:”,data3)
如图:
代码:
#广播运算
a1=np.array([1,6,1])
a2=np.array([[3],[2],[4]])
a3=a1+a2
print(“数组广播为:\n”,a3)
如图:
代码:
#标量运算
d1=np.array([6])
d2=np.array([[3,1,3],[2,2,4]])
d3=d1+d2
print(“标量相加为:\n”,d3)
如图:
7.创建一个二维数组,使用索引的方式获取第二行第一列和第三行第二列的数据
代码:
#索引就是数组每个元素对应的下标,能唯一的标识每个元素的位置
d7=np.arange(16).reshape(4,4)
print(d7)
print(“第二行第一列为:”)
print(d7[1,0])
print(“第三行第二列为:”)
print(d7[2,1])
如图:
8.使用切片的方式获取7题中数组的1,2行和第2,3列的数据
#切片就是按照行的范围整行和列的范围整列来取数组中的一片区域,如:one[开始行位置:结束行位置加一, 开始列位置:结束列位置加一]
代码:
d8=d7
print(d8)
print(“第一行为:”)
print(d8[0])
print(“第二行为:”)
print(d8[1])
print(“第二列为:”)
print(d8[0:5,1])
print(“第三列为:”)
print(d8[0:5,2])
如图:
代码:d7[:2,1:3]
9.使用切片与整数索引混合使用的方法,获取7题数组中第二行第2.3列数据
#混合使用的话,这里的第二行用整数索引来表示,第二三列用切片来表示【这里可以完全用切片来使用【d9[1:2;1:3]】】
代码:
d9=d7
print(d9)
print(“第二行第二,三列数据是”)
print(d9[1,1:3])
如图:
10.参考课件,使用花式索引获取第7题中索引为(2,2)和(1,3)的元素
代码:
d10=d7
print(d10)
print(‘索引为(2,2)和(1,3)的元素为:’)
print(d10[[1,0],[1,2]])
如图:
11.创建如下两个数据:
代码:
#创建存储学生姓名的数组
student_name=np.array([‘Tom’,‘Lily’,‘Jack’,‘Rose’])
#创建存储学生成绩的数组
student_score=np.array([[79,88,80],[89,90,92],[83,78,85],[78,76,80]])
如图:
使用布尔类型索引输出Rose的成绩
12.创建两个数组完成sqrt.abs.maximum.greater函数的调用
代码:
aa1=np.array([10,20,30,40])
print(aa1)
aa2=np.array([8,-67,-34,69])
print(aa2)
print(“数组aa1中元素的平方根为:”,np.sqrt(aa1))
print(‘数组aa2中元素的绝对值为:’,np.abs(aa2))
print(‘两个数组比较结果为:’,np.greater(aa1,aa2))
如图:
13.完成矩阵相乘和矩阵行列式的计算
代码:
#矩阵相乘
a1=np.array([[11,22,33],[44,55,66]])
a2=np.array([[1,2],[3,4],[7,8]])
a1.dot(a2)
如图:
代码:
#矩阵行列式
a1=np.array([[11,22],[3,4]])
a2=np.linalg.det(a1)
a2
如图:
14.完成酒鬼漫步案例
代码:
steps=20
draws=np.random.randint(0,2,size=steps)
print(draws)
direction_step=np.where(draws
0,1,-1)
distance=direction_step.cumsum()
print(distance)
#向前走的最远距离
distance.max()
如图:
代码:
#15米换成步数
steps=1/0.5
(np.abs(distance)>=steps).argmax()
如图: