首页 > 其他分享 >numpy常见操作总结

numpy常见操作总结

时间:2023-11-28 17:15:07浏览次数:38  
标签:总结 示例 常见 维度 数组 np array numpy

1.计算一个list的平均值

import numpy as np

# 创建一个包含数字的列表
my_list = [1, 2, 3, 4, 5]

# 使用numpy.mean()函数计算平均值
average = np.mean(my_list)

print("平均值:", average)

2.numpy数组查看尺寸

在 NumPy 中,您可以使用 .shape 属性来查看数组的尺寸(维度大小)。.shape 属性返回一个元组,其中包含数组在每个维度上的大小。以下是如何查看 NumPy 数组尺寸的示例代码:

import numpy as np

# 创建一个示例数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 使用 .shape 属性查看数组尺寸
array_shape = arr.shape

print("数组尺寸:", array_shape)

在这个示例中,array_shape 将是一个元组 (2, 3),表示数组的第一个维度大小为 2,第二个维度大小为 3。

如果您只想查看数组的维度数(即数组的秩),您可以使用 .ndim 属性:

import numpy as np

# 创建一个示例数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 使用 .ndim 属性查看数组的维度数
array_dimension = arr.ndim

print("数组维度数:", array_dimension)

在这个示例中,array_dimension 将是一个整数值 2,表示数组是一个二维数组。

3.已知numpy二维数组,尺寸为224*224,现在使用裁剪框进行裁剪,裁剪框的左上角和右下角坐标为[x1,y1,x2,y2],怎么实现

您可以使用 NumPy 的数组切片操作来实现裁剪功能。根据给定的裁剪框坐标 [x1, y1, x2, y2],您可以使用切片来选择所需的区域。以下是如何实现裁剪的示例代码:

import numpy as np

# 创建一个示例的 224x224 二维数组
image_array = np.random.randint(0, 255, size=(224, 224))

# 裁剪框的左上角和右下角坐标
x1, y1, x2, y2 = 50, 50, 150, 150

# 使用切片来进行裁剪
cropped_array = image_array[y1:y2, x1:x2]

# 打印裁剪后的数组尺寸
print("裁剪后的数组尺寸:", cropped_array.shape)

在这个示例中,我们首先创建了一个随机的 224x224 二维数组 image_array 作为示例输入图像。然后,我们使用给定的裁剪框坐标 [x1, y1, x2, y2] 来使用切片操作选择裁剪区域。最后,我们打印裁剪后的数组尺寸,以确认裁剪是否成功。

请注意,切片操作不会修改原始数组,而是创建一个新的数组来表示裁剪后的区域。

4.numpy怎么把一个尺寸为(14,15)扩展元素到(14,15,3)

您可以使用 NumPy 的广播(broadcasting)功能来将一个尺寸为 (14, 15) 的数组扩展为 (14, 15, 3)。广播允许您在某些情况下自动对不同形状的数组执行操作,以使它们具有相同的形状,从而进行元素级操作。

在这种情况下,您可以通过在第三个维度上添加一个长度为 3 的新维度来扩展数组。以下是如何实现的示例代码:

import numpy as np

# 创建一个尺寸为 (14, 15) 的示例数组
array = np.random.rand(14, 15)

# 在第三个维度上添加一个长度为 3 的新维度
expanded_array = array[:, :, np.newaxis]

# 打印扩展后数组的形状
print("扩展后数组的形状:", expanded_array.shape)

在这个示例中,我们首先使用 np.random.rand(14, 15) 创建一个尺寸为 (14, 15) 的示例数组。然后,我们使用 array[:, :, np.newaxis] 在第三个维度上添加一个新维度,使数组的形状从 (14, 15) 变为 (14, 15, 1)。

如果您想要的最终形状是 (14, 15, 3),您可以使用 np.repeat() 来将新维度复制为多个通道,如下所示:

import numpy as np

# 创建一个尺寸为 (14, 15) 的示例数组
array = np.random.rand(14, 15)

# 在第三个维度上添加一个长度为 3 的新维度
expanded_array = array[:, :, np.newaxis]

# 将新维度复制为 3 个通道
expanded_array = np.repeat(expanded_array, 3, axis=2)

# 打印扩展后数组的形状
print("扩展后数组的形状:", expanded_array.shape)

这样,您就将数组从 (14, 15) 扩展为 (14, 15, 3)。

5.两个numpy相乘,尺寸需要满足什么

在 NumPy 中,两个数组相乘的规则与矩阵乘法和逐元素乘法相关。

  • 逐元素相乘: 如果您想要逐元素地将两个数组相乘,使得相同位置的元素相乘,那么数组的尺寸必须相同。也就是说,两个数组的形状(维度)必须完全一致。

  • 矩阵乘法(内积): 如果您想要进行矩阵乘法(内积),其中第一个矩阵的列数必须等于第二个矩阵的行数。结果的矩阵将具有第一个矩阵的行数和第二个矩阵的列数。例如,如果第一个矩阵的形状是 (m, n),第二个矩阵的形状是 (n, p),那么结果的矩阵形状将是 (m, p)。

以下是两种情况的示例代码:

逐元素相乘:

import numpy as np

# 创建两个相同尺寸的示例数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# 逐元素相乘
elementwise_product = array1 * array2

print("逐元素相乘结果:")
print(elementwise_product)

矩阵乘法(内积):

import numpy as np

# 创建两个矩阵,第一个矩阵的列数等于第二个矩阵的行数
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])

# 进行矩阵乘法(内积)
matrix_product = np.dot(matrix1, matrix2)

print("矩阵乘法结果:")
print(matrix_product)

6.numpy 数组中怎么将0和1转为False和True

要将 NumPy 数组中的 0 转换为 False,将 1 转换为 True,您可以使用条件运算符或者逻辑运算来实现。以下是两种常见的方法:

  • 使用条件运算符:
import numpy as np

# 创建一个示例的 NumPy 数组
numpy_array = np.array([[0, 1, 0], [1, 0, 1]])

# 使用条件运算符将 0 转换为 False,将 1 转换为 True
bool_array = numpy_array.astype(bool)

print(bool_array)

在这个示例中,astype(bool) 将数组的元素转换为布尔类型,其中 0 被转换为 False,1 被转换为 True。

  • 使用逻辑运算:
import numpy as np

# 创建一个示例的 NumPy 数组
numpy_array = np.array([[0, 1, 0], [1, 0, 1]])
# 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
# 使用逻辑运算将 0 转换为 False,将非零值转换为 True
bool_array = numpy_array != 0

print(bool_array)

在这个示例中,numpy_array != 0 创建了一个布尔数组,其中非零元素被转换为 True,零元素被转换为 False。

无论您选择哪种方法,最终都会得到一个布尔类型的数组,其中 0 被转换为 False,1 被转换为 True。

标签:总结,示例,常见,维度,数组,np,array,numpy
From: https://www.cnblogs.com/xxpythonxx/p/17862403.html

相关文章

  • 十二周课堂总结
    7.2基本分区7.2.1添加新硬盘用lsblk查看硬盘,如下所示: 采用MBR分区表形式创建分区,可使用fdisk命令,添加“-l”参数可以查看系统所挂硬盘个数及分区情况,具体如下所示: 比较sda与sdb的区别,具体如下所示: 使用fdisk命令对sdc硬盘进行分区,然后输入不同的参数来创建分区,具体......
  • 编辑原理总结
    编译原理第一章引言1.从面向机器的语言到面向人类的语言汇编指令:用符号表示的指令被称为汇编指令汇编语言:汇编指令的集合称为汇编语言2.语言之间的翻译转换(也被称为预处理):高级语言之间的翻译,如FORTRAN到ADA的转换编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语......
  • 集合框架(三)ArrayList的常见使用
    优点:有序,可以重复,查询快。缺点:增删慢。List接口常用方法:1、add(Objectelement):向列表的尾部添加指定的元素。2、size():返回列表中的元素个数。3、get(intindex):返回列表中指定位置的元素,index从0开始。4、add(intindex,Objectelement):在列表的指定位置插入指定元......
  • vue3 项目中出现的空白页面的总结(巨坑)
    一、背景开局先说一句!!!!好坑!!!!!,我遇到的空白页面的问题,不是路由懒加载的原因,是在点击路由完整的状态下,点击菜单跳转页面,出现的空白页面,不能触发页面中任何钩子函数,但是路由是跳了的,重新刷新页面,页面内容即可出现,而且空白出现率相当高。打开浏览器控制台和项目控制台都不报......
  • 常见贪心算法类型
    备考建议贪心思想是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,如果要得到整个问题的最优答案,那么每一步都要尽可能的得到最优的答案。首先初赛必然无法考察贪心的证明。聚焦在贪心的经典题型,又因为贪心算法,方便与其他知识点关联,比如结构体排序后贪心,比如二分答......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • linux的期末总结
    简介Linux是目前最流行的操作系统之一,在服务器、桌面、移动等领域都有广泛的应用。为了深入了解Linux内核的运行机制,我参加了学校的Linux内核分析课程。通过八周的学习,我对Linux内核有了比较深入的了解,并在以下几个方面取得了进步:掌握了Linux内核的基本概念和结构理解......
  • Linux课堂知识总结
    这是学习Linux的第五节课,老师跟我们讲述了Linux的进程管理操作。程序(program)是一个普通文件,是为了完成特定任务而准备好的指令序列与数据的集合,这些指令和数据以“可执行映像”的格式保存在磁盘中。例如:hello.c源程序文件经过编译后产生a.out程序,其中a.out文件为可执行镜像格式......
  • Linux课堂知识总结
    这是学习Linux的第六节课,老师跟我们讲述了Linux的i/o重定向操作。cat:合并文件。sort:对文本行排序。uniq:报告或删除文件中重复的行。wc:打印文件中的换行符、字和字节的个数。grep:打印匹配行。head:输出文件的第一部分内容。tail:输出文件的最后一部分内容。tee:读取标准输入的数据,并......
  • 集合框架(一) Java中Map的常见方法的使用及循环的五种方式
    Map是Java中的一种集合,它是一种键值对的映射表,可以根据键快速获取对应的值。@[toc]##1.常见使用方式以下是Java中Map的常见方法使用示例及运行结果:###1.1存储键值对使用put()方法向Map中添加键值对:```javaMap<String,Integer>map=newHashMap<>();map.put("apple",10......