NumPy--reshape、切片操作、copy函数

这篇具有很好参考价值的文章主要介绍了NumPy--reshape、切片操作、copy函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

⛳reshape方法和flatten、ravel方法

  • reshape用于改变数组的形状和维度
  • flatten 用于将多维数组展平为一维数组。该方法返回一个新的一维数组,其中包含了原始数组中的所有元素,按照原始数组的元素顺序排列。
  • 注意
    • reshape方法返回的是一个新的数组对象,原始数组并没有被修改。
    • flatten方法返回的是一个新的数组对象,原始数组并没有被修改。
    • ravel方法将多维数组展平为一维数组,返回的结果是原数组的视图(view),也就是共享内存的方式,因此对返回的结果进行修改会影响原数组。如果需要得到展平后的数组的副本,可以使用flatten方法。
    • 如果需要对原始数组进行就地修改,可以将返回的值重新赋值给原变量
  • flatten和ravel的区别
    • ravelflatten都是用于将多维数组展平为一维数组的方法,但它们之间有一些区别:
      1. 返回值类型:ravel返回的是原数组的视图(view),如果修改了展平后的数组,原数组也会受到影响;而flatten返回的是展平后的数组的副本(copy),修改展平后的数组不会影响原数组。
      2. 内存管理:ravel方法返回的是数组的视图,因此不需要额外的内存空间;而flatten方法返回的是数组的副本,需要分配额外的内存空间。
      3. 性能:由于ravel返回的是数组的视图,因此执行速度较快;而flatten返回的是副本,因此执行速度较慢。

总的来说,如果你只需要展平数组,并且不需要修改原数组,那么可以使用flatten方法;如果你希望在展平后的数组上进行修改,并且希望修改反映到原数组上,那么可以使用ravel方法。

🎯实战–reshape、flatten、ravel

# coding: utf-8  
  
import numpy as np  
  
# 创建一维的数组  
a = np.arange(24)  
print(a)  
print('数组a的维度', a.shape)  
print('_'*30)  
  
# 使用reshape将一维数组变成三维数组  
b = a.reshape((2, 3, 4))  
print(b)  
print('数组b的维度;', b.shape)  
print('_'*30)  
  
# 将a变成二维数组  
c = a.reshape(3, 8)  
print(c)  
print('数组c的维度:', c.shape)  
print('_'*30)  
  
# 使用ravel函数将三维的b变成一维的数组  
a1 = b.ravel()  
print(a1)  
print('_'*30)  
  
# 使用flatten函数将二维的c变成一维的数组  
a2 = c.flatten()  
print(a2)  
print('_'*30)

result:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
数组a的维度 (24,)
______________________________
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
数组b的维度; (2, 3, 4)
______________________________
[[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 11 12 13 14 15]
 [16 17 18 19 20 21 22 23]]
数组c的维度: (3, 8)
______________________________
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
______________________________
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
______________________________

进程已结束,退出代码0

⛳数组的切片(slice)的copy

  • ndarray 对象的内容可以通过索引或切片来访问和修改,与 Python 中list的切片操作一样。
  • ndarray 数组可以基于 0 - n 的下标进行索引,并设置 start, stop及step 参数进行,从原数组中切割出一个新数组。
  • 在NumPy中,可以使用copy方法创建数组的副本。copy方法用于创建原数组的一个深拷贝,即创建一个新的数组,并复制原数组的数据到新数组中。
    • Usage:np.copy(order='C')

🎯实战–slice & copy

# coding: utf-8  
  
import numpy as np  
  
x = np.arange(10)  
print('原数组:', x)  
y = x[2:7:2]  
z = x[2:]  
print(y)  
print(z)  
  
x2 = np.arange(1, 13)  
a = x2.reshape(4, 3)  
print(a)  
print('获取第二行')  
print(a[1])  
print('获取第三行第二列')  
print(a[2][1])  
  
# 二维数组切片的使用  
x3 = np.arange(1, 13)  
a = x3.reshape(4, 3)  
print('数组元素')  
print(a)  
# 使用索引获取  
print('所有行的第二列')  
print(a[:, 1])  
print('奇数行的第一列')  
print(a[::2, 0])  
  
a = np.arange(1, 13).reshape(4, 3)  
print('数组元素')  
print(a)  
print('获取第三行第二列的结果:', a[2, 1])  
print('同时获取第三行第二列, 第四行第一列')  
print('分别获取', np.array((a[2, 1], a[3, 0])))  
print('第一个元组是行索引, 第二个元组的列索引', a[(2, 3), (1, 0)])  
  
# 负索引的使用  
x4 = np.arange(1, 13).reshape(4, 3)  
print('数组元素')  
print(x)  
print('获取最后一行')  
print(a[-1])  
print('行进行倒序')  
print(a[::-1])  
print('行列都倒序')  
print(a[::-1, ::-1])  
  
# copy函数实现数组的复制  
a = np.arange(1, 13).reshape(3, 4)  
sub_array = a[:2, :2]  
sub_array[0][0] = 1000 # 它只不过指针指向了原数组的一段内存, 改变sub_array原数组中对应的部分仍然会发生改变  
print(a)  
print(sub_array)  
print('copy')  
sub_array = np.copy(a[:2, :2])  
sub_array[0][0] = 2000  
print(a)  
print(sub_array)

result;文章来源地址https://www.toymoban.com/news/detail-579299.html

原数组: [0 1 2 3 4 5 6 7 8 9]
[2 4 6]
[2 3 4 5 6 7 8 9]
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
获取第二行
[4 5 6]
获取第三行第二列
8
数组元素
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
所有行的第二列
[ 2  5  8 11]
奇数行的第一列
[1 7]
数组元素
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
获取第三行第二列的结果: 8
同时获取第三行第二列, 第四行第一列
分别获取 [ 8 10]
第一个元组是行索引, 第二个元组的列索引 [ 8 10]
数组元素
[0 1 2 3 4 5 6 7 8 9]
获取最后一行
[10 11 12]
行进行倒序
[[10 11 12]
 [ 7  8  9]
 [ 4  5  6]
 [ 1  2  3]]
行列都倒序
[[12 11 10]
 [ 9  8  7]
 [ 6  5  4]
 [ 3  2  1]]
[[1000    2    3    4]
 [   5    6    7    8]
 [   9   10   11   12]]
[[1000    2]
 [   5    6]]
copy
[[1000    2    3    4]
 [   5    6    7    8]
 [   9   10   11   12]]
[[2000    2]
 [   5    6]]

进程已结束,退出代码0

到了这里,关于NumPy--reshape、切片操作、copy函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 科学计算库—numpy随笔

    本质是多维 数组对象 list 类型转为 numpy 数组 更有利科学计算 8.1.1、为什么用 numpy? 1.虽然Python数组结构中的列表list实际上就是数组,但是列表list保存的是对象的指针,list中的元素在系统内存中是分散存储的,例如[0,1,2]需要3个指针和3个整数对象,浪费内存和计算时间。

    2024年02月02日
    浏览(59)
  • 1、NumPy简介:开启Python科学计算之旅

    系列文章:Numpy系列文章-CSDN博客       目录 什么是 NumPy? 为什么要使用 NumPy? 安装和设置 NumPy 环境 开始使用 NumPy        在数据科学、人工智能和科学计算的世界中,Python 已经成为了一种主流的编程语言。这一现象的背后,有一个非常重要的推手,那就是 NumPy。Num

    2024年01月19日
    浏览(30)
  • 在科学计算领域独领风骚,NumPy书写辉煌传奇

    在数字世界的边缘,有一座神奇的城市,这座城市由无数个数据点和向量构成,街道上流淌着数不清的数组和矩阵。在城市的中心,耸立着一座巨大的科学计算塔,它的外墙是由数学符号和代码构成,散发着闪烁的数字光芒。城里的居民们穿梭于数组的巷道间,驾驭着向量的

    2024年03月24日
    浏览(33)
  • python实战应用讲解-【numpy科学计算】line_profiler模块(附python示例代码)

    目录   Numpy 安装line_profiler 准备工作 具体步骤 Numpy 用line_profiler分析代码 具体步骤 攻略小结

    2023年04月08日
    浏览(35)
  • 【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)

    目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 1. 初始化 a. 创建空列表 b. 使用现有元素初始化列表 c. 使用列表生成式 d. 复制列表 2. 索引和切片 a. 索引 b. 负数索引 c. 切片 3. 常用操作(更新、删除) a. 更新单个元素 b. 更新切片 c. 删除单

    2024年02月09日
    浏览(40)
  • 猿创征文|【Python数据科学快速入门系列 | 05】常用科学计算函数

    这是机器未来的第44篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126615267 本文以鸢尾花的数据预处理为例,描述了科学计算在机器学习使用的示例。 以鸢尾花数据集为例。 鸢尾花数据集有4个特征,1个标签,特征为sepal_length,sepal_width,petal_length,petal_width,分别

    2023年04月09日
    浏览(42)
  • Numpy 数组切片

    1.1、切片原理 列表切片是从原始列表中提取列表的一部分的过程。在列表切片中,我们将根据所需内容(如,从何处开始,结束以及增量进行切片)剪切列表。Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。 规则: 1.2、切片使用 1.2.1、获取列表

    2023年04月19日
    浏览(40)
  • 【数据分析之道-NumPy(三)】numpy切片与索引

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》 ,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,可以阅读《数据分析之道》中全部文章内容

    2023年04月09日
    浏览(32)
  • 【Python Numpy教程】切片和索引

    NumPy是Python中用于科学计算的重要库之一,它提供了多维数组对象和许多用于操作这些数组的函数。在本教程中,我们将探讨NumPy中的数组切片和索引,这是使用NumPy进行数据处理和分析时的关键概念。数组切片和索引使您能够访问、操作和修改NumPy数组的元素,对于数据处理

    2024年02月03日
    浏览(30)
  • 【Python 零基础入门】Numpy 常用函数 数组操作 & 数学运算

    Numpy (Numerical Python) 是 Python 编程语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 并提供了大量的数学函数库. Numpy 利用了多线程数组来存储和处理大型数据集, 从而提供了一个高效的方式来进行数值计算, 特别是对于矩阵预算和线性代数. np.assarray 可以将输入转换为

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包