关于#numpy#的问题,如何解决?

已知一维数组scores存储了某门课程的10位学生的成绩,定义如下,请用numpy库完成以下任务:
import numpy as np
scores = np.array([65,88,98,76,100,78,56,90,89,59])
(1)求该科目的总成绩。
(2)求该科目的平均成绩。
(3)求该科目的最高成绩。
(4)将每个学生的成绩加上5分。
(5)将该一维数组转换成2×5的二维数组。

以下是使用numpy库完成给出任务的代码:

import numpy as np

scores = np.array([65,88,98,76,100,78,56,90,89,59])

# (1) 求该科目的总成绩。
total_score = np.sum(scores)
print("总成绩:", total_score)

# (2) 求该科目的平均成绩。
average_score = np.mean(scores)
print("平均成绩:", average_score)

# (3) 求该科目的最高成绩。
max_score = np.max(scores)
print("最高成绩:", max_score)

# (4) 将每个学生的成绩加上5分。
modified_scores = scores + 5
print("加分后的成绩:", modified_scores)

# (5) 将该一维数组转换成2×5的二维数组。
two_dim_array = np.reshape(scores, (2, 5))
print("转换后的二维数组:")
print(two_dim_array)

输出结果如下:

总成绩: 799
平均成绩: 79.9
最高成绩: 100
加分后的成绩: [ 70  93 103  81 105  83  61  95  94  64]   
转换后的二维数组:
[[ 65  88  98  76 100]
 [ 78  56  90  89  59]]

可以看到,以上代码成功地完成了所有给出的任务。其中,我们使用了numpy库提供的sum()、mean()、max()、reshape()等函数来实现计算和数组转换的操作。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7686781
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:numpy学习——难点解析(二)多维数组转置解释
  • 除此之外, 这篇博客: 5、numpy数组统计分析之坐标矩阵、统计函数、排序中的 实例:统计函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import numpy as np
    b=np.array([[[2,3],[6,8]],[[9,0],[1,8]],[[2,4],[6,1]]])
    print('b:\n',b)
    print('b的均值:\n',b.mean().round(2))#相当于np.mean(a)
    print('b的和:\n',b.sum())#相当于np.sum(a)
    print('b的最大值:\n',b.max())
    print('b的标准差:\n',b.std().round(2))
    print('b的最小值的索引:\n',b.argmin())
    print('b中是否包含非0的数:\n',b.any())
    print('b中是否全部都是>2的数:\n',np.all(b>2))
    print('b中大于6的数的累计和:\n',b[b>6].cumsum())
    print('b的第二个一级子数列的和:\n',np.sum(b[1]))#相当于b[1].sum()
    print('b的第二个轴上的元素的均值:\n',b.mean(1))
    print('b的第一个轴上的元素的和:\n',b.sum(0))
    print('b的第一个轴上的元素的累计值:\n',b.cumsum(0))
    print('b的第二个轴上的元素的累计积:\n',b.cumprod(1))
    print('b的第二个轴上的元素的方差:\n',b.var(1))
    print('b的第一个轴上的元素的最小值:\n',b.min(0))
    print('b的第一个轴上的元素的最大值的索引:\n',b.argmax(0))
    print('b的第二个轴上是否包含>3的数:\n',np.any(b>3,axis=1,keepdims=True))#大于3的数返回True
    print('b的第三个轴上是否全是>1的数:\n',np.all(b>1,axis=2))
    
    runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')
    b:
     [[[2 3]
      [6 8]]
    
     [[9 0]
      [1 8]]
    
     [[2 4]
      [6 1]]]
    b的均值:
     4.17
    b的和:
     50
    b的最大值:
     9
    b的标准差:
     3.0
    b的最小值的索引:
     5
    b中是否包含非0的数:
     True
    b中是否全部都是>2的数:
     False
    b中大于6的数的累计和:
     [ 8 17 25]
    b的第二个一级子数列的和:
     18
    b的第二个轴上的元素的均值:
     [[4.  5.5]
     [5.  4. ]
     [4.  2.5]]
    b的第一个轴上的元素的和:
     [[13  7]
     [13 17]]
    b的第一个轴上的元素的累计值:
     [[[ 2  3]
      [ 6  8]]
    
     [[11  3]
      [ 7 16]]
    
     [[13  7]
      [13 17]]]
    b的第二个轴上的元素的累计积:
     [[[ 2  3]
      [12 24]]
    
     [[ 9  0]
      [ 9  0]]
    
     [[ 2  4]
      [12  4]]]
    b的第二个轴上的元素的方差:
     [[ 4.    6.25]
     [16.   16.  ]
     [ 4.    2.25]]
    b的第一个轴上的元素的最小值:
     [[2 0]
     [1 1]]
    b的第一个轴上的元素的最大值的索引:
     [[1 2]
     [0 0]]
    b的第二个轴上是否包含>3的数:
     [[[ True  True]]
    
     [[ True  True]]
    
     [[ True  True]]]
    b的第三个轴上是否全是>1的数:
     [[ True  True]
     [False False]
     [ True False]]
    
  • 您还可以看一下 李宁老师的NumPy:深度学习系列视频教程课程中的 用线性模型进行预测(最小二乘法、梯度)小节, 巩固相关知识点