【Numpy】二维数组的切片matrix[0, :]和索引matrix[[0],:]

二维数组选择一行matrix[0,:]或者一列matrix[:,0]

  • 首先创建一个包含随机选择的0、1、2元素的大小为5x3的矩阵
matrix = np.random.choice([0, 1, 2], size=(5, 3))

:代表这一行的数据全部选择
选择一行输出为[0 0 2],形状为(3,)
matrix[0, :] 选择二维数组的第一行。
matrix[1, :] 选择二维数组的第二行。
matrix[-2, :] 选择二维数组的倒数第二行。
matrix[-1, :] 选择二维数组的最后一行。

import numpy as np

# 创建一个包含随机选择的0、1、2元素的大小为5x3的矩阵
matrix = np.random.choice([0, 1, 2], size=(5, 3))

# 输出结果
print("Random matrix:")
print(matrix)

# 选择第一行和第二行
first_row = matrix[0, :]
second_row = matrix[1, :]

print(f"matrix[0,:] shape {matrix[0, :].shape}")

# 输出结果
print("First row:")
print(first_row)
print("Second row:")
print(second_row)
  • 选择特定的列,输出[0 2 2 1 2],形状为(5,)
import numpy as np
matrix = np.random.choice([0, 1, 2], size=(5, 3))
# 输出结果
print("Random matrix:")
print(matrix)

print(f"matrix[:, 0] shape {matrix[:, 0].shape}")
# 选择第一个和第二个列
first_column = matrix[:, 0]
second_column = matrix[:, 1]

# 选择倒数第二个和倒数第一个列
second_last_column = matrix[:, -2]
last_column = matrix[:, -1]

# 输出结果
print("First column:")
print(first_column)
print("Second column:")
print(second_column)
print("Second last column:")
print(second_last_column)
print("Last column:")
print(last_column)

matrix[0, :]结合数组切片[0:2]操作取出前两个元素matrix[0, 0:2]

  • matrix[0, :]选择第一行,对:改进一下写成matrix[0, 0:2]变成取出第一行的前两个元素
  • 相当于first_row = matrix[0, :]先取第一行,再进行一维数组切片first_row[0:2]
  • 还有一种写法是matrix[0][0:2],和matrix[0, 0:2]输出结果相同
import numpy as np

# 创建一个包含随机选择的0、1、2元素的大小为5x3的矩阵
matrix = np.random.choice([0, 1, 2], size=(5, 3))

# 输出结果
print("Random matrix:")
print(matrix)

# 选择第一行和第二行
first_row = matrix[0, :]
first_row_twoelements = matrix[0, 0:2]

# 输出结果
print("First row:")
print(first_row)
print(first_row[0:2])
print("第一行前两个元素:")
print(first_row_twoelements)

使用索引进行选择matrix[[0], :]

  • 选择第一行,matrix[[0], :],形状(1, 3),输出[[2 1 2]]
  • 选择第一行第二行,matrix[[0,1], :],形状(2, 3)
  • matrix[[0:1], :]语法错误,索引切片时应该用逗号 , 分隔行和列,而不是使用冒号 : 作为行切片的一部分
import numpy as np

# 创建一个包含随机选择的0、1、2元素的大小为5x3的矩阵
matrix = np.random.choice([0, 1, 2], size=(5, 3))

# 输出结果
print("Random matrix:")
print(matrix)

# 选择第一行和第二行
first_row = matrix[0, :]
first_row_v2 = matrix[[0], :]

# 输出结果
print("First row:")
print(first_row.shape)
print(first_row)
print(first_row_v2.shape)
print(first_row_v2)

索引matrix[[0, 2], :]和切边matrix[0:2, :]

  • 使用索引可以选择多个非连续行或列
# 选择第一个、第二个、倒数第二个和最后一行
selected_rows = matrix[[0, 1, -2, -1],:]
  • 使用切片选择连续行,matrix[0:1, :] 选择第0行到第1行(不包括第1行)的所有列。0:1 是行切片的范围,: 表示所有列。
# 选择第0到第2行(不包括第2行),以及所有列
subset = matrix[0:2, :]

print("Subset of matrix (rows 0 to 1):")
print(subset)
  • 最后一个例子,matrix[0, [0,1]]
  • 类比matrix[0, :] ,:选择第一行所有元素,[0,1]是选择第一行种前两个元素
  • 输出是[2 2],形状是(2,)

相关推荐

  1. NumPy 切片索引

    2024-07-18 19:22:01       21 阅读
  2. 平移矩阵 (2D translate matrix)

    2024-07-18 19:22:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 19:22:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 19:22:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 19:22:01       58 阅读
  4. Python语言-面向对象

    2024-07-18 19:22:01       69 阅读

热门阅读

  1. VUE +Element-plus+leanCloud 分页逻辑

    2024-07-18 19:22:01       27 阅读
  2. 测试面试题(七)

    2024-07-18 19:22:01       22 阅读
  3. 从Oracle到PostgreSQL:详细对比与迁移工具说明

    2024-07-18 19:22:01       24 阅读
  4. jquery return false的作用

    2024-07-18 19:22:01       21 阅读
  5. Android 11 使用HAL层的ffmpeg库(1)

    2024-07-18 19:22:01       20 阅读
  6. FFmpeg: 强大的多媒体处理工具

    2024-07-18 19:22:01       24 阅读
  7. Nginx文件上传过大,报错 413

    2024-07-18 19:22:01       20 阅读
  8. 【华为机考真题】字符串压缩

    2024-07-18 19:22:01       22 阅读
  9. Android init常用调试工具

    2024-07-18 19:22:01       25 阅读