【Numpy】入门常犯错误

【入门】常见错误

错误题目分析

27. 反转二维数组的行顺序
arr1 = arr1[::-1]  # ✅ 正确方法(反转行)
arr1 = arr1[:,::-1] # ❌ 这是反转列,不是题目要求的反转行
  • 问题:第二个操作[:,::-1]会反转列顺序,不符合题目要求
  • 正确做法:只需使用arr1[::-1]即可反转行顺序

34. 将一维数组的第2到第4个元素设置为10
arr2 = np.arange([1, 2, 3, 3, 2, 1])  # ❌ 语法错误
arr2[2,4] = 10  # ❌ 索引方式错误
  • 错误1np.arange()的参数应该是单个整数,用于生成等差数列。创建自定义数组应使用np.array()
  • 错误2:一维数组使用[2,4]会触发高级索引,实际需要切片操作
  • 正确做法
arr2 = np.array([1,2,3,3,2,1])  # ✅ 正确创建数组
arr2[2:5] = 10  # ✅ 使用切片选择第2到第4个元素(索引2,3,4)

35. 在三维数组中提取第1个通道的所有数据
arr3 = np.arange([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])  # ❌ 语法错误
  • 错误np.arange()不能直接创建自定义三维数组
  • 正确做法
arr3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])  # ✅
print(arr3[0,:,:])  # ✅ 正确提取第1个通道

弱项总结

  1. 数组创建混淆

    • np.arange() vs np.array() 的区别
    • np.arange(n) 生成0到n-1的等差数列
    • np.array([...]) 用于创建自定义数组
  2. 维度操作理解

    • 一维数组索引不需要逗号(arr[2:5]
    • 多维数组索引需要逗号分隔维度(arr[行, 列]
  3. 切片操作细节

    • [::-1]的反转方向:对行操作时不需要指定列维度
    • 区分行反转(arr[::-1])和列反转(arr[:,::-1])
  4. 函数参数类型

    • np.arange()接收整数参数(如np.arange(5)
    • 直接创建自定义数组必须用np.array()

巩固练习建议

  1. 数组创建练习
# 创建以下数组:
# 1. 从5到10的一维数组(使用np.arange)
# 2. 自定义二维数组 [[1,3,5], [2,4,6]]
arr1 = np.arange(5, 11)
arr2 = np.array([[1,3,5], [2,4,6]])
  1. 维度操作练习
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
# 1. 提取第二列
# 2. 反转所有行
# 3. 交换第一列和第三列
print(arr[:,1])        # 第二列
print(arr[::-1,:])     # 反转行
arr[:,[0,2]] = arr[:,[2,0]]  # 交换列
  1. 条件筛选练习
arr = np.array([2,5,8,3,10])
# 找到所有大于4且小于9的元素
mask = (arr > 4) & (arr < 9)
print(arr[mask])  # 输出 [5,8]

掌握这些基础后,你的NumPy操作会更精准!

你可能感兴趣的:(numpy,python,开发语言)