zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    如何手工设置归档目录
    C#字符串格式化说明(String.Format) (zz.IS2120)
    win7 GodMode
    金山软件公司创始人求伯君简介 (is2120.zz)
    【百度地图】安卓系统的百度地图可以下载离线地图,这个很省流量和时间
    手机用笔记本wifi上网【无USB、无软件、无无线路由器】
    安卓版有道词典的离线词库《21世纪大英汉词典》等
    秀秀我的巨无霸手机P1000
    [转载]环游澳大利亚18天——前传与攻略
    [转载]环游澳大利亚18天——前传与攻略
  • 原文地址:https://www.cnblogs.com/HuZihu/p/11017292.html
Copyright © 2011-2022 走看看