numpy部分Day2练习题

本文提供了一系列使用NumPy库的基础操作示例,包括数组创建、排序、数学运算、数组形状改变及索引筛选等,适合初学者快速掌握NumPy的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第二次课作业¶

(1)创建一个1到10的数组,然后逆序输出。

(2)创建一个长度为20的全1数组,然后变成一个4×5的二维矩阵并转置。

(3)创建一个3x3x3的随机数组。 (提示: np.random.random)

(4)从1到10中随机选取10个数,构成一个长度为10的数组,并将其排序。获取其最大值最小值,求和,求方差。

(5)从1到10中随机选取10个数,构成一个长度为10的数组,选出其中的奇数。

(6)生成0到100,差为5的一个等差数列,然后将数据类型转化为整数。

(7)从1到10中随机选取10个数,大于3和小于8的取负数。

(8)在数组[1, 2, 3, 4, 5]中相邻两个数字中间插入1个0。

(9)新建一个5乘5的随机二位数组,交换其中两行?比如交换第一二行。

(10)把一个10*2的随机生成的笛卡尔坐标转换成极坐标。

(11)创建一个长度为10并且除了第五个值为1其余的值为2的向量。

(12)创建一个长度为10的随机向量,并求其累计和。

(13)将数组中的所有奇数替换成-1。

(14)构造两个4乘3的二维数组,按照3种方法进行连接?

(15)获取数组 a 和 b 中的共同项(索引位置相同,值也相同)。 a = np.array([1,2,3,2,3,4,3,4,5,6]),b = np.array([7,2,10,2,7,4,9,4,9,8])

(16)从数组 a 中提取 5 和 10 之间的所有项。a=np.array([7,2,10,2,7,4,9,4,9,8])


第二次课作业

(1)创建一个1到10的数组,然后逆序输出。

import numpy as np
a = np.arange(1,11)
a[::-1]

>>> array([10,  9,  8,  7,  6,  5,  4,  3,  2,  1])

(2)创建一个长度为20的全1数组,然后变成一个4×5的二维矩阵并转置。

a = np.ones(20,dtype = 'int')
a.reshape(4,5).T

>>> array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])

(3)创建一个3x3x3的随机数组。 (提示: np.random.random)

a = np.random.random((3,3,3))
a

>>> array([[[0.1078272 , 0.55647897, 0.76246341],
        [0.5918745 , 0.53773446, 0.20961237],
        [0.43973111, 0.96394802, 0.55635021]],

       [[0.74489844, 0.87943582, 0.30602641],
        [0.49477693, 0.75412682, 0.62198408],
        [0.13302172, 0.2759241 , 0.48893249]],

       [[0.27836957, 0.69021856, 0.89529683],
        [0.76193621, 0.67624359, 0.13364018],
        [0.6758363 , 0.74126334, 0.9879873 ]]])

(4)从1到10中随机选取10个数,构成一个长度为10的数组,并将其排序。获取其最大值最小值,求和,求方差。

a = np.random.randint(1,10,10)
a.sort()
a

>>> array([1, 3, 3, 3, 3, 4, 6, 7, 8, 9])

a.max()

>>> 9

a.min()

>>> 1

a.sum()

>>> 47

a.var()

>>> 6.209999999999999

(5)从1到10中随机选取10个数,构成一个长度为10的数组,选出其中的奇数。

a = np.random.randint(1,10,10)
for i in a:
    if i % 2 !=0:
        print(i)

>>> 7
    7
    9
    1

(6)生成0到100,差为5的一个等差数列,然后将数据类型转化为整数。

a = np.arange(0,101,5)
a

>>> array([  0,   5,  10,  15,  20,  25,  30,  35,  40,  45,  50,  55,  60,
        65,  70,  75,  80,  85,  90,  95, 100])

(7)从1到10中随机选取10个数,大于3和小于8的取负数。

a = np.random.randint(1,10,10)
for i in a:
    if i > 3 and i < 8:
        i = -i
    print(i)

>>> 9
    2
    -7
    8
    -7
    8
    1
    -5
    9
    -4

(8)在数组[1, 2, 3, 4, 5]中相邻两个数字中间插入1个0。

a = np.array([1, 2, 3, 4, 5])
b =np.zeros(9,dtype='int')
b[: : 2] = a
b

>>> array([1, 0, 2, 0, 3, 0, 4, 0, 5])

(9)新建一个5乘5的随机二位数组,交换其中两行?比如交换第一二行。

a = np.random.randint(1,10,(5,5))
a = a[[1,0,2,3,4]]
a

>>> array([[7, 8, 2, 6, 7],
       [9, 3, 9, 3, 9],
       [3, 1, 3, 2, 4],
       [3, 4, 9, 1, 3],
       [6, 2, 2, 9, 9]])

(10)把一个10*2的随机生成的笛卡尔坐标转换成极坐标。

a = np.random.randint(1,10,(10,2))
a

>>> array([[5, 2],
       [2, 7],
       [1, 2],
       [7, 7],
       [7, 1],
       [7, 9],
       [4, 4],
       [1, 2],
       [8, 6],
       [5, 2]])

x = a[:,0]
y = a[:,1]
r = np.sqrt(x**2+y**2)
R = np.arctan(y/x)
print(x)
print(y)
print(r)
print(R)

>>> [5 2 1 7 7 7 4 1 8 5]
    [2 7 2 7 1 9 4 2 6 2]
    [ 5.38516481  7.28010989  2.23606798  9.89949494  7.07106781 11.40175425
      5.65685425  2.23606798 10.          5.38516481]
    [0.38050638 1.29249667 1.10714872 0.78539816 0.14189705 0.90975316
     0.78539816 1.10714872 0.64350111 0.38050638]

(11)创建一个长度为10并且除了第五个值为1其余的值为2的向量。

a = np.ones(10,dtype = 'int') * 2
a[4] = 1
a

>>> array([2, 2, 2, 2, 1, 2, 2, 2, 2, 2])

(12)创建一个长度为10的随机向量,并求其累计和。

a = np.random.randint(1,11,10)
a.cumsum()

>>> array([ 2,  4,  7,  8, 14, 21, 24, 29, 31, 35], dtype=int32)

(13)将数组中的所有奇数替换成-1。

a = np.random.randint(1,11,10)
a[a % 2 == 1] = -1
a

>>> array([-1, -1,  4, 10, 10,  4, 10,  6, -1,  8])

(14)构造两个4乘3的二维数组,按照3种方法进行连接?

a = np.random.randint(1,10,(4,3))
b = np.random.randint(1,10,(4,3))
np.vstack((a,b))

>>> array([[1, 3, 2],
       [9, 5, 5],
       [9, 9, 3],
       [4, 9, 1],
       [9, 8, 7],
       [7, 5, 2],
       [7, 9, 7],
       [7, 3, 9]])

np.hstack((a,b))

>>> array([[1, 3, 2, 9, 8, 7],
       [9, 5, 5, 7, 5, 2],
       [9, 9, 3, 7, 9, 7],
       [4, 9, 1, 7, 3, 9]])

np.dstack((a,b))

>>> array([[[1, 9],
        [3, 8],
        [2, 7]],

       [[9, 7],
        [5, 5],
        [5, 2]],

       [[9, 7],
        [9, 9],
        [3, 7]],

       [[4, 7],
        [9, 3],
        [1, 9]]])

(15)获取数组 a 和 b 中的共同项(索引位置相同,值也相同)。 a = np.array([1,2,3,2,3,4,3,4,5,6]),b = np.array([7,2,10,2,7,4,9,4,9,8])

a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
c = a - b
a[c == 0]

>>> array([2, 2, 4, 4])

(16)从数组 a 中提取 5 和 10 之间的所有项。a=np.array([7,2,10,2,7,4,9,4,9,8])

a = np.array([7,2,10,2,7,4,9,4,9,8])
a[5:10]

>>> array([4, 9, 4, 9, 8])

a[(a > 5) & (a < 10)]

>>> array([7, 7, 9, 9, 8])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风倾雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值