Numpy数组计算实训

实训1 使用数组比较运算对超市牛奶价格进行对比

1.训练要点

  1. 掌握Numpy的数组创建方法
  2. 掌握数组的比较运算方法

2.需求说明

某两个超市均销售了5种相同的牛奶产品,为了对比A、B两个超市中5种牛奶产品的价格,创建milk_a和milk_b两个一维数组,分别存放两个超市的牛奶价格,对两个数组中存放的价格进行比较运算。

3.实现思路及步骤

  1. 1.创建A超市的牛奶价格数组milk_a为[19.9,25,29.9,45,39.9]
  2. 创建A超市的牛奶价格数组milk_b为[18.9,25,24.9,49,35.9]
  3. 使用大于符号对milk_a和milk_b进行比较运算

代码:

import numpy as np

milk_a = np.array([19.9, 25, 29.9, 45, 39.9])
milk_b = np.array([18.9, 25, 24.9, 49, 35.9])

# 使用大于符号(>)对两个数组进行比较
comparison_result = milk_a > milk_b

print(comparison_result)

实训2 创建6✖6的简单数独游戏矩阵

1.训练要点

  1. 掌握矩阵创建方法
  2. 掌握数组索引的使用方法

2.需求说明

数独是一种数学智力填空游戏,数独的玩法逻辑简单,数字排列方式多种多样,是一种锻炼大脑的游戏。为了使学生了解数独游戏的玩法,需要创建6✖6的数独游戏,填充6✖6矩阵。矩阵每一行的数字为1~6且不能重复,每一列的数字同样为1~6且不能重复。

3.解决方法

import numpy as np
def is_valid(board, row, col, num):
    # 检查行是否合法
    if num in board[row]:
        return False
    # 检查列是否合法
    if num in board[:, col]:
        return False
    # 检查3x2小矩阵是否合法
    if num in board[row - row % 3:row - row % 3 + 3, col - col % 2:col - col % 2 + 2]:
        return False
    return True
def solve_sudoku(board):
    for row in range(6):
        for col in range(6):
            if board[row][col] == 0:
                for num in range(1, 7):
                    if is_valid(board, row, col, num):
                        board[row][col] = num
                        if solve_sudoku(board):
                            return True
                        board[row][col] = 0
                return False
    return True
# 创建一个6x6的空数独游戏矩阵
sudoku_board = np.zeros((6, 6), dtype=int)
# 填充数独矩阵
solve_sudoku(sudoku_board)
print(sudoku_board)

要创建4个相同的3x3对角矩阵,对角线元素分别为[1, 2, 3],然后将它们合并为一个6x6的新矩阵,您可以使用NumPy库来完成这个任务。首先,我们将创建一个3x3的对角矩阵,然后使用np.block函数将这些矩阵堆叠在一起,以创建一个6x6的新矩阵。

代码:

import numpy as np

# 创建一个3x3的对角矩阵,对角线元素为[1, 2, 3]
diagonal_matrix = np.diag([1, 2, 3])

# 使用np.block函数堆叠四个相同的3x3对角矩阵
block_matrix = np.block([[diagonal_matrix, np.zeros((3, 3))],
                         [np.zeros((3, 3)), diagonal_matrix]])

print(block_matrix)

再将上述矩阵转置

代码:

transposed_matrix = block_matrix.T

或者

transposed_matrix = np.transpose(block_matrix)

完整代码:

import numpy as np

# 创建一个3x3的对角矩阵,对角线元素为[1, 2, 3]
diagonal_matrix = np.diag([1, 2, 3])

# 使用np.block函数堆叠四个相同的3x3对角矩阵
block_matrix = np.block([[diagonal_matrix, np.zeros((3, 3))],
                         [np.zeros((3, 3)), diagonal_matrix]])

# 输出合并后的6x6矩阵
print("合并后的6x6矩阵:")
print(block_matrix)

# 获取矩阵的转置
transposed_matrix = block_matrix.T

# 输出转置矩阵
print("\n转置矩阵:")
print(transposed_matrix)

你可能感兴趣的:(numpy,python)