当前位置: 首页 > news >正文

Numpy数组与矩阵——python学习

        我前面提到过Numpy函数,但是不够全,在这里我顺便做一些补充。先说明一下我用的是Notebook。

一、数组的创建与操作

1、把列表转换为数组

np.array([1,2,3,4,5])

2、把元组转换为数组

np.array((1,2,3,4,5))

3、把range对象转换为数组

np.array(range(5))

4、二维数组,需要一个包含列表为元素的列表

a = [[1,2,3],[3,4,5],[4,5,6]]
b = np.array(a)
print(b)

5、数组转换为列表,使用 tolist()函数

a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.tolist()
print(c)

6、查看数组的数据类型 dtype

a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.dtype
print(c)

7、查看数组维度 shape

a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.shape
print(c)

8、修改数组维度 shape / reshape

a = ([[1,2,3],[3,4,5]])
b = np.array(a)
b.shape = 3,2
print(b)

a = ([[1,2,3],[3,4,5]])
b = np.array(a)
c = b.reshape(3,2)
print(c)

9、查看数组中数据个数

a = ([[1,2,3],[3,4,5]])
b = np.array(a)
c = b.reshape(3,2)
print('size函数:',c.size)
print('len函数:',len(c))

len 是指元素的个数

size 是指数据的个数,也就是说元素可以包含多个数据。

二、多维数组

1、全零数组

np.zeros((3,3))

2、全一数组

np.ones((3,3))

三、矩阵

1、单位矩阵

np.identity(3)

2、空数组

np.empty(3)

3、对角数组

np.diag([1,2,3,4])

四、多维数组

        使用np.full ( shape, val)函数创建多维数组,猫哥元素均填充为val。

np.full((3,4),9)

五、实验

        生成5*5的ndarray对象,且矩阵边界全为1,里面全为0。

方法1:

  1. 初始矩阵a = np.zeros((3,3)) → 3x3 的零矩阵。

  2. 向下扩展a = np.r_[a, np.ones((1,3))] → 添加一行1,变为4x3。

  3. 向上扩展a = np.r_[np.ones((1,3)), a] → 顶部添加一行1,变为5x3。

  4. 向左扩展列a = np.c_[np.ones((5,1)), a] → 左边添加一列1,变为5x4。

  5. 向右扩展列a = np.c_[a ,np.ones((5,1))] → 右边添加一列1,变为5x5。

import numpy as npa = np.zeros((3, 3))
a = np.r_[a, np.ones((1, 3))]  # 4x3
a = np.r_[np.ones((1, 3)), a]   # 5x3
a = np.c_[np.ones((5, 1)), a]   # 5x4(左添加一列)
a = np.c_[a, np.ones((5, 1))]   # 5x5(右添加一列,假设这是预期操作)print(a)

方法2:

a = np.full((5,5),1)
a[1:4,1:4] = 0
a

方法3:

a = np.array([[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1]])
a.shape = 5,5
a

方法4:

  1. 第一行和最后一行:直接使用 b[0, :] 和 b[-1, :] 选中整行。

  2. 中间行的首尾列:使用 b[1:-1, 0] 和 b[1:-1, -1] 选中第1到倒数第二行(避免重复操作首尾行)的第一列和最后一列。

  3. 避免覆盖中间区域:原中间3x3区域已被设为0,四周操作不会影响它。

a = range(25)
b = np.array(a)
b.shape = 5,5
b[1:4,1:4] = 0# 将四周替换为1
b[0, :] = 1      # 第一行
b[-1, :] = 1     # 最后一行
b[1:-1, 0] = 1   # 中间行的第一列
b[1:-1, -1] = 1  # 中间行的最后一列
b

方法5:

import numpy as np
a = np.zeros((5,5))
a[[0,4],:] = 1
a[:,[0,4]] = 1

方法6:

a = range(25)
b = np.array(a)
b.shape = 5,5
b[0:5,0:5] = 1
b[1:4,1:4] = 0
b

相关文章:

  • CSS 预处理器与模块化:Sass/LESS 实战技巧
  • 项目实战-贪吃蛇大作战【补档】
  • K8S ConfigMap 快速开始
  • 防静电瓷砖 vs 直铺PVC防静电地板优劣势对比
  • OpenCV 图形API(68)图像与通道拼接函数------垂直拼接两个图像/矩阵的函数concatVert()
  • OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()
  • 使用 MQTT - C 访问 IoTDA 平台:一个完整的嵌入式示例
  • phpstorm用php连接数据库报错
  • linux 使用nginx部署vue、react项目
  • 人脑、深思考大模型与其他大模型的区别科普
  • Mac搭建Flutter IOS环境详细指南
  • Flutter 学习之旅 之 Flutter 和 Android 原生 实现数据交互的MethodChanel和EventChannel方式的简单整理
  • Transformer数学推导——Q27 证明时序注意力(Temporal Attention)在视频模型中的帧间依赖建模
  • 因特网和万维网
  • 游戏打击感实现
  • Day8 鼠标控制与32位模式切换
  • 配置管理平台Nacos01:基础安装教程和启动运行
  • 软件测试深度解析:从“用户登录“看测试用例设计的艺术
  • 零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统
  • 复现:Mamba-UNet:降水临近预报的创新解决方案
  • 遭遇大规模停电,西班牙内政部宣布进入国家紧急状态
  • 全过程人民民主研究基地揭牌,为推动我国民主政治建设贡献上海智慧
  • 知名计算机专家、浙江大学教授张森逝世
  • 著名统计学家、北京工业大学应用数理学院首任院长王松桂逝世
  • “谁羽争锋”全国新闻界羽毛球团体邀请赛在厦门开赛
  • 北京朝阳法院:未经许可使用他人剧本语句和情节构成侵权