目录
(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的随机二位数组,交换其中两行?比如交换第一二行。
(11)创建一个长度为10并且除了第五个值为1其余的值为2的向量。
(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])