【numpy】20道numpy题目
1、創建一個長度為10的一維全為0的ndarray對象,然后讓第5個元素等于1
import numpy as npndarry =np.zeros(10) ndarry array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) ndarry[4]=1 ndarry array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])2、創建一個元素為從10到49的ndarray對象
ndarray = np.arange(10,50) ndarray 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])3、將第2題的所有元素位置反轉
ndarray[::-1] array([49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,15, 14, 13, 12, 11, 10])使用np.random.random創建一個10*10的ndarray對象,并打印出最大最小元素
ndarray = np.random.random((10,10)) ndarray ndarray.min() 0.0090737492129658875、創建一個10*10的ndarray對象,且矩陣邊界全為1,里面全為0
a=np.zeros((10,10),dtype=np.int8) a[[0,-1]]=1 a[:,[0,-1]]=1 a array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=int8)6、創建一個每一行都是從0到4的5*5矩陣
a=np.array([0,1,2,3,4]*5).reshape(5,5) a array([[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]])7、創建一個范圍在(0,1)之間的長度為12的等差數列
a=np.linspace(0,1,12) a array([0. , 0.09090909, 0.18181818, 0.27272727, 0.36363636,0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,0.90909091, 1. ])8、創建一個長度為10的隨機數組并排序
a = np.random.randint(1,10,size=10) a.sort() a array([1, 2, 2, 3, 4, 4, 6, 7, 8, 9])9、創建一個長度為10的隨機數組并將最大值替換為0
a = np.random.randint(1,10,10)b=a.max() c=a==b a[c]=0 a,b,c (array([3, 5, 0, 7, 1, 2, 7, 0, 5, 7]),9,array([False, False, True, False, False, False, False, True, False,False]))10、如何根據第3列來對一個5*5矩陣排序????
a=np.random.randint(0,25,size=25).reshape(5,5) a array([[ 4, 20, 17, 6, 5],[ 8, 14, 14, 10, 3],[ 7, 5, 12, 7, 4],[15, 1, 7, 5, 24],[12, 14, 16, 12, 2]]) b=np.argsort(a[:,2]) a[b] array([[15, 1, 7, 5, 24],[ 7, 5, 12, 7, 4],[ 8, 14, 14, 10, 3],[12, 14, 16, 12, 2],[ 4, 20, 17, 6, 5]])11、給定一個4維矩陣,如何得到最后兩維的和?
a=np.random.randint(0,10,size=(3,4,5,6)) a.sum(axis=-1).sum(axis=-1) a array([[[[4, 0, 0, 8, 6, 9],[4, 0, 8, 4, 4, 5],[3, 7, 2, 4, 2, 7],[9, 8, 9, 2, 3, 1],[8, 1, 4, 2, 5, 9]],[[7, 5, 5, 7, 6, 2],[3, 5, 3, 4, 7, 1],[0, 5, 7, 7, 6, 7],[5, 8, 7, 9, 8, 3],[6, 9, 2, 6, 0, 5]],[[9, 2, 7, 9, 0, 7],[1, 4, 7, 5, 4, 3],[6, 8, 0, 2, 8, 4],[8, 4, 8, 7, 4, 3],[0, 9, 2, 2, 6, 7]],[[3, 0, 0, 9, 5, 3],[7, 4, 9, 4, 9, 8],[7, 1, 3, 3, 4, 5],[1, 0, 7, 3, 8, 3],[7, 1, 6, 3, 9, 4]]],[[[0, 4, 8, 9, 7, 6],[0, 0, 7, 0, 8, 3],[3, 7, 7, 4, 7, 8],[5, 1, 7, 5, 3, 7],[8, 9, 0, 4, 2, 6]],[[1, 9, 1, 2, 7, 6],[6, 4, 4, 3, 9, 5],[4, 1, 5, 8, 9, 5],[0, 0, 2, 8, 9, 5],[6, 3, 0, 8, 0, 9]],[[5, 4, 9, 2, 9, 8],[2, 7, 4, 3, 5, 8],[8, 8, 0, 4, 4, 8],[7, 5, 1, 6, 1, 1],[1, 8, 1, 0, 4, 4]],[[7, 6, 6, 4, 8, 2],[2, 1, 1, 1, 0, 7],[5, 1, 6, 2, 3, 5],[2, 4, 6, 0, 8, 9],[3, 6, 5, 3, 1, 6]]],[[[1, 8, 1, 7, 2, 5],[3, 0, 9, 3, 8, 0],[5, 2, 1, 0, 8, 4],[4, 1, 3, 8, 4, 3],[4, 8, 8, 2, 6, 2]],[[7, 6, 2, 5, 9, 7],[2, 9, 1, 2, 5, 9],[3, 0, 2, 5, 5, 0],[6, 0, 1, 8, 4, 3],[5, 4, 5, 6, 2, 1]],[[9, 5, 0, 5, 0, 7],[0, 4, 8, 4, 4, 8],[6, 2, 3, 9, 3, 7],[7, 7, 1, 8, 3, 5],[0, 4, 7, 6, 9, 7]],[[2, 1, 4, 6, 7, 8],[8, 6, 0, 5, 8, 1],[9, 4, 8, 2, 8, 5],[0, 6, 2, 3, 9, 6],[8, 7, 4, 2, 7, 6]]]])12、給定數組[1, 2, 3, 4, 5],如何得到在這個數組的每個元素之間插入3個0后的新數組?
a=np.arange(1,6) b=np.zeros(17,dtype=np.int8) b[::4]=a b array([1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5], dtype=int8)13、給定一個二維矩陣,如何交換其中兩行的元素?
a=np.arange(0,20).reshape(4,5) a a[[1,0,2,3]] a array([[ 0, 1, 2, 3, 4],[ 5, 6, 7, 8, 9],[10, 11, 12, 13, 14],[15, 16, 17, 18, 19]])14、創建一個100000長度的隨機數組,使用兩種方法對其求三次方,并比較所用時間
import time a=np.random.randn(1000000) at1 = time.time() np.power(a,3)time= time.time()-t1 time 0.046874761581420915、創建一個53隨機矩陣和一個32隨機矩陣,求矩陣積
a=np.random.randint(0,10,(5,3))b=np.random.randint(0,10,(3,2)) a,b np.matmul(a,b) array([[ 48, 50],[171, 101],[124, 62],[105, 63],[ 75, 67]])16、矩陣的每一行的元素都減去該行的平均值
a=np.random.randint(0,10,(3,3)) a b=a.mean(axis=1).reshape(3,1) a-b array([[ 2.66666667, -1.33333333, -1.33333333],[-3. , 3. , 0. ],[-1.33333333, 0.66666667, 0.66666667]])17、打印出以下函數(要求使用np.zeros創建8*8的矩陣):
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
18、正則化一個5*5隨機矩陣
正則的概念:假設a是矩陣中的一個元素,max/min分別是矩陣元素的最大最小值,則正則化后a = (a - min)/(max - min)
19、將一個一維數組轉化為二進制表示矩陣。例如
[1,2,3]
轉化為
[[0,0,1],
[0,1,0],
[0,1,1]]
20、實現冒泡排序法
arr = np.random.randint(1,10,size=10) for i in range(1, len(arr)):for j in range(0, len(arr)-i):if arr[j] > arr[j+1]:arr[j], arr[j + 1] = arr[j + 1], arr[j] arr array([2, 2, 3, 5, 5, 6, 7, 8, 9, 9])總結
以上是生活随笔為你收集整理的【numpy】20道numpy题目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MapBox定位与离线地图下载Andro
- 下一篇: 核电厂的“神经中枢”——核电厂数字化仪控