翼度科技»论坛 编程开发 python 查看内容

numpy常见操作总结

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
1.计算一个list的平均值
  1. import numpy as np
  2. # 创建一个包含数字的列表
  3. my_list = [1, 2, 3, 4, 5]
  4. # 使用numpy.mean()函数计算平均值
  5. average = np.mean(my_list)
  6. print("平均值:", average)
复制代码
2.numpy数组查看尺寸

在 NumPy 中,您可以使用 .shape 属性来查看数组的尺寸(维度大小)。.shape 属性返回一个元组,其中包含数组在每个维度上的大小。以下是如何查看 NumPy 数组尺寸的示例代码:
  1. import numpy as np
  2. # 创建一个示例数组
  3. arr = np.array([[1, 2, 3], [4, 5, 6]])
  4. # 使用 .shape 属性查看数组尺寸
  5. array_shape = arr.shape
  6. print("数组尺寸:", array_shape)
复制代码
在这个示例中,array_shape 将是一个元组 (2, 3),表示数组的第一个维度大小为 2,第二个维度大小为 3。
如果您只想查看数组的维度数(即数组的秩),您可以使用 .ndim 属性:
  1. import numpy as np
  2. # 创建一个示例数组
  3. arr = np.array([[1, 2, 3], [4, 5, 6]])
  4. # 使用 .ndim 属性查看数组的维度数
  5. array_dimension = arr.ndim
  6. print("数组维度数:", array_dimension)
复制代码
在这个示例中,array_dimension 将是一个整数值 2,表示数组是一个二维数组。
3.已知numpy二维数组,尺寸为224*224,现在使用裁剪框进行裁剪,裁剪框的左上角和右下角坐标为[x1,y1,x2,y2],怎么实现

您可以使用 NumPy 的数组切片操作来实现裁剪功能。根据给定的裁剪框坐标 [x1, y1, x2, y2],您可以使用切片来选择所需的区域。以下是如何实现裁剪的示例代码:
  1. import numpy as np
  2. # 创建一个示例的 224x224 二维数组
  3. image_array = np.random.randint(0, 255, size=(224, 224))
  4. # 裁剪框的左上角和右下角坐标
  5. x1, y1, x2, y2 = 50, 50, 150, 150
  6. # 使用切片来进行裁剪
  7. cropped_array = image_array[y1:y2, x1:x2]
  8. # 打印裁剪后的数组尺寸
  9. 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 的新维度来扩展数组。以下是如何实现的示例代码:
  1. import numpy as np
  2. # 创建一个尺寸为 (14, 15) 的示例数组
  3. array = np.random.rand(14, 15)
  4. # 在第三个维度上添加一个长度为 3 的新维度
  5. expanded_array = array[:, :, np.newaxis]
  6. # 打印扩展后数组的形状
  7. print("扩展后数组的形状:", expanded_array.shape)
复制代码
在这个示例中,我们首先使用 np.random.rand(14, 15) 创建一个尺寸为 (14, 15) 的示例数组。然后,我们使用 array[:, :, np.newaxis] 在第三个维度上添加一个新维度,使数组的形状从 (14, 15) 变为 (14, 15, 1)。
如果您想要的最终形状是 (14, 15, 3),您可以使用 np.repeat() 来将新维度复制为多个通道,如下所示:
  1. import numpy as np
  2. # 创建一个尺寸为 (14, 15) 的示例数组
  3. array = np.random.rand(14, 15)
  4. # 在第三个维度上添加一个长度为 3 的新维度
  5. expanded_array = array[:, :, np.newaxis]
  6. # 将新维度复制为 3 个通道
  7. expanded_array = np.repeat(expanded_array, 3, axis=2)
  8. # 打印扩展后数组的形状
  9. print("扩展后数组的形状:", expanded_array.shape)
复制代码
这样,您就将数组从 (14, 15) 扩展为 (14, 15, 3)。
5.两个numpy相乘,尺寸需要满足什么

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

  • 逐元素相乘: 如果您想要逐元素地将两个数组相乘,使得相同位置的元素相乘,那么数组的尺寸必须相同。也就是说,两个数组的形状(维度)必须完全一致。
  • 矩阵乘法(内积): 如果您想要进行矩阵乘法(内积),其中第一个矩阵的列数必须等于第二个矩阵的行数。结果的矩阵将具有第一个矩阵的行数和第二个矩阵的列数。例如,如果第一个矩阵的形状是 (m, n),第二个矩阵的形状是 (n, p),那么结果的矩阵形状将是 (m, p)。
以下是两种情况的示例代码:
逐元素相乘:
  1. import numpy as np
  2. # 创建两个相同尺寸的示例数组
  3. array1 = np.array([[1, 2], [3, 4]])
  4. array2 = np.array([[5, 6], [7, 8]])
  5. # 逐元素相乘
  6. elementwise_product = array1 * array2
  7. print("逐元素相乘结果:")
  8. print(elementwise_product)
复制代码
矩阵乘法(内积):
  1. import numpy as np
  2. # 创建两个矩阵,第一个矩阵的列数等于第二个矩阵的行数
  3. matrix1 = np.array([[1, 2], [3, 4]])
  4. matrix2 = np.array([[5, 6], [7, 8]])
  5. # 进行矩阵乘法(内积)
  6. matrix_product = np.dot(matrix1, matrix2)
  7. print("矩阵乘法结果:")
  8. print(matrix_product)
复制代码
6.numpy 数组中怎么将0和1转为False和True

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

  • 使用条件运算符:
  1. import numpy as np
  2. # 创建一个示例的 NumPy 数组
  3. numpy_array = np.array([[0, 1, 0], [1, 0, 1]])
  4. # 使用条件运算符将 0 转换为 False,将 1 转换为 True
  5. bool_array = numpy_array.astype(bool)
  6. print(bool_array)
复制代码
在这个示例中,astype(bool) 将数组的元素转换为布尔类型,其中 0 被转换为 False,1 被转换为 True。

  • 使用逻辑运算:
  1. import numpy as np
  2. # 创建一个示例的 NumPy 数组
  3. numpy_array = np.array([[0, 1, 0], [1, 0, 1]])
  4. # 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
  5. # 使用逻辑运算将 0 转换为 False,将非零值转换为 True
  6. bool_array = numpy_array != 0
  7. print(bool_array)
复制代码
在这个示例中,numpy_array != 0 创建了一个布尔数组,其中非零元素被转换为 True,零元素被转换为 False。
无论您选择哪种方法,最终都会得到一个布尔类型的数组,其中 0 被转换为 False,1 被转换为 True。

来源:https://www.cnblogs.com/xxpythonxx/p/17862403.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具