以下摘录一些numpy的练习题。答案仅供参考,并不是唯一的。因为完成题目可以用很多种不同的方法,因此只要你自己的方法能够完成任务即可。
1、如何创建从0到9的一维数组?
结果:
[0 1 2 3 4 5 6 7 8 9]
答案:
array=np.arange(10)
2. 如何创建一个3*3的二维数组,值全为True(真)?
结果:
[[ True True True]
[ True True True]
[ True True True]]
答案:
array=np.full((3,3),True)
or
array=np.ones((3,3),dtype=bool)
3. 如何创建一个3×3的二维数组,值域为0到8?
结果:
[[0 1 2] [3 4 5] [6 7 8]]
答案:
array=np.arange(9).reshape(3,3)
4. 如何从数组np.array(
[1, 2, 0, 0, 4, 0])
中找出非0元素的位置索引?
结果:
array([0, 1, 4]
答案:
array=np.array([1, 2, 0, 0, 4, 0])
index=np.where(array!=0)
5. 如何从数组np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
中提取所有的奇数?
结果:
[1 3 5 7 9]
答案:
array=np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
odd_nums=array[array%2!=0]
6. 如何将数组np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
中的所有奇数替换为-1?
结果:
[ 0 -1 2 -1 4 -1 6 -1 8 -1]
答案:
array=np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array[array%2!=0]=-1
7. 如何将数组np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
中的所有奇数替换为-1,而不改变原数组?
结果:
original array: [0 1 2 3 4 5 6 7 8 9]
changed array: [ 0 -1 2 -1 4 -1 6 -1 8 -1]
答案:
array=np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr=np.where(array%2!=0,-1,array)
8. 如何将一维数组np.arange(10)
转换为2行的二维数组?
结果:
[[0 1 2 3 4]
[5 6 7 8 9]]
答案:
array=np.arange(10).reshape((2,-1))
注:列设置为-1表示自动转换成相应的列数
9. 如何将数组a = np.arange(10).reshape(2,-1)
和数组b = np.repeat(1, 10).reshape(2,-1)
垂直堆叠?
结果:
[[0 1 2 3 4] [5 6 7 8 9] [1 1 1 1 1] [1 1 1 1 1]]
答案:
a = np.arange(10).reshape(2,-1) b = np.repeat(1, 10).reshape(2,-1) array=np.vstack((a,b))
or
a = np.arange(10).reshape(2,-1) b = np.repeat(1, 10).reshape(2,-1) array=np.concatenate((a,b),axis=0)
10. 如何将数组a = np.arange(10).reshape(2,-1)
和数组b = np.repeat(1, 10).reshape(2,-1)
水平堆叠?
结果:
[[0, 1, 2, 3, 4, 1, 1, 1, 1, 1]
[5, 6, 7, 8, 9, 1, 1, 1, 1, 1]]
答案:
a = np.arange(10).reshape(2,-1) b = np.repeat(1, 10).reshape(2,-1) array=np.hstack((a,b))
or
a = np.arange(10).reshape(2,-1) b = np.repeat(1, 10).reshape(2,-1) array=np.concatenate((a,b),axis=1)
11. 如何获取数组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])
元素相匹配的位置?
结果:
array([1, 3, 5, 7]
答案:
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]) location=np.where(a==b)
12. 如何从数组np.arange(15)
中提取5到10之间的所有数字?
结果:
[ 5 6 7 8 9 10]
答案:
array=np.arange(15)
nums=array[(array>=5) & (array<=10)]
or
array=np.arange(15) index=np.where((array>=5) & (array<=10)) nums=array[index]
13. 如何交换数组np.arange(9).reshape(3,3)
中的第1列和第2列?
结果:
[[1 0 2] [4 3 5] [7 6 8]]
答案:
array=np.arange(9).reshape(3,3)
array=array[:,[1,0,2]]
14. 如何交换数组np.arange(9).reshape(3,3)
中的第1行和第2行?
结果:
[[3 4 5] [0 1 2] [6 7 8]]
答案:
array=np.arange(9).reshape(3,3)
array=array[[1,0,2],:]
15. 如何创建一个形状为5x3的二维数组,其包含5到10之间的随机浮点数?
结果:
[[9.71536206 5.48559036 6.16270046] [9.80558974 7.99453137 6.08687276] [9.36538995 7.68606063 8.13776235] [9.8819585 9.37235799 7.8899307 ] [9.65236084 8.48604657 7.08038605]]
答案:
array=np.random.rand(5,3)+np.random.randint(low=5,high=10,size=(5,3))
16. 如何获取数组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])
之间的共同元素?
结果:
[2 4]
答案:
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]) index=np.isin(a,b) elements=np.unique(a[index])
or
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]) elements=np.intersect1d(a,b)
17. 如何从数组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])
中存在的所有元素?
结果:
[1 3 3 3 5 6]
答案:
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]) index=np.isin(a,b) array=a[~index]
18. 如何反转二维数组np.arange(9).reshape(3,3)
的行?
结果:
[[6 7 8] [3 4 5] [0 1 2]]
答案:
array=np.arange(9).reshape(3,3)
array=array[::-1,:]
19. 如何反转二维数组np.arange(9).reshape(3,3)
的列?
结果:
[[2 1 0] [5 4 3] [8 7 6]]
答案:
array=np.arange(9).reshape(3,3)
array=array[:,::-1]
20. 如何把数组np.arange(15)的
随机位换成值44?
结果:
[ 0 1 2 3 4 5 6 7 44 9 10 11 12 13 14]
答案:
array=np.arange(15) np.random.seed(100) array[np.random.choice(len(array))]=44
21. 如何查找数组np.array([1,2,3,2,3,4,3,4,5,6])
中的唯一值的数量?
结果:
(array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 2, 1, 1], dtype=int64))
答案:
array=np.array([1,2,3,2,3,4,3,4,5,6])
counts=np.unique(array,return_counts=True)
22. 如何找到二维数组np.arange(9).reshape(3,3)
每一行中的最大值?
结果:
[6 7 8]
答案:
array=np.arange(9).reshape(3,3)
max_num=np.max(array,axis=0)
23. 如何计算数组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])
之间的欧式距离?
结果:
12.529964086141668
答案:
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]) distance=np.sqrt(np.sum((a-b)**2))
24. 给出起点2,长度10和步长3,如何创建一个numpy数组?
结果:
[ 2 5 8 11 14 17 20 23 26 29]
答案:
array=np.arange(2,3*10+2,3)
25. 如何从二维数组a_2d = np.array([[3,3,3],[4,4,4],[5,5,5]])中的每行减去一维数组
b_1d = np.array([1,2,3])中相应的值
?
结果:
[[2 2 2] [2 2 2] [2 2 2]]
答案:
a_2d = np.array([[3,3,3],[4,4,4],[5,5,5]]) b_1d = np.array([1,2,3]) array=a_2d-b_1d[:,np.newaxis]
26. 如何知道数组np.array([1,2,3,2,3,4,3,4,5,6])
有没有NaN值?
结果:
False
答案:
array=np.array([1,2,3,2,3,4,3,4,5,6])
is_na=np.isnan(array).any()
27. 如何把数组中的NaN值替换成0?
结果:
[1. 2. 3. 2. 0. 4. 3. 4. 5. 6.]
答案:
array=np.array([1,2,3,2,np.nan,4,3,4,5,6])
array[np.isnan(array)]=0
28. 如何知道数组np.array([7,2,10,2,7,4,9,4,9,8])
中的第二大值是多少?
结果:
9
答案:
array=np.array([7,2,10,2,7,4,9,4,9,8])
num=np.unique(array)[-2]
29. 如何把数组np.random.randint(1,10(3,3))
按照数组最后一列的数值进行排序?
结果:
[[8 6 2] [3 8 8] [9 8 9]]
答案:
np.random.seed(4) array=np.random.randint(1,10,(3,3)) order=np.argsort(array[:,-1]) array=array[order,:]
30. 如何知道数组np.array([7,2,10,2,7,2,4,9,4,9,8])
中出现频率最高的值是什么?
结果:
2
答案:
array=np.array([7,2,10,2,7,2,4,9,4,9,8])
most_frequent=np.unique(array,return_counts=True)[0][0]
31. 如何找出数组np.array([1, 2, 1, 1, 3, 4, 3, 1, 1, 2, 1, 1, 2])
中第五个1出现的位置?
结果:
8
答案:
array=np.array([1, 2, 1, 1, 3, 4, 3, 1, 1, 2, 1, 1, 2])
loc=np.argsort(array)[4]
32. 如何创建一个5*5的矩阵,每行的数值都是从0到4?
结果:
[[0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.]]
答案:
利用numpy数组的广播功能
array1=np.arange(5) array2=np.zeros((5,5)) array=array1+array2