Numpy练习题

以下摘录一些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
原文地址:https://www.cnblogs.com/HuZihu/p/11017292.html