NumPY实验练习

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属性,就是我们想要的数组元素类型

data4.dtype.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()

如图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43306493/article/details/92761559