您的位置:

详解numpy.ndarray转list

一、从numpyarray转list

NumPy是Python科学计算的基础包,提供了一种快速、高效的多维数组对象 ndarray ,用于存储同类型的数据。在NumPy中,多维数组ndarray是最重要的数据结构,它是一个由同类型元素组成的矩阵,具备高效的数值计算功能。但是,有时候我们需要将ndarray转换为Python中的list对象,便于进行其他操作或对数据进行处理。

下面给出两种方法实现numpy.ndarray转list:

方法1:使用tolist()

import numpy as np

# 定义一个ndarray数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用tolist()方法将ndarray数组转为list
arr_list = arr.tolist()

# 输出list类型及数组内容
print('list类型:', type(arr_list))
print('list内容:', arr_list)

运行结果:

list类型: 
list内容: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

  

方法2:使用for循环遍历

import numpy as np

# 定义一个ndarray数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 定义空列表,用于存放结果
arr_list = []

# 使用for循环遍历每个元素,将其加入列表中
for item in arr:
    arr_list.append(list(item))

# 输出list类型及数组内容
print('list类型:', type(arr_list))
print('list内容:', arr_list)

运行结果:

list类型: 
list内容: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

  

二、numpy转tensor

在深度学习框架中,常常用到tensor,即张量,是高维度数组在PyTorch、TensorFlow等框架中的实现。与numpy.array相似,tensor也是一个矩阵,但是与 numpy.ndarray 不同的是,tensor可以在 GPU 上进行运算,是深度学习的基础。下面给出numpy.ndarray到tensor的转换实例:

import torch
import numpy as np

# 定义一个ndarray数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 将ndarray数组转换为tensor
arr_tensor = torch.from_numpy(arr)

# 输出tensor类型及数组内容
print('tensor类型:', type(arr_tensor))
print('tensor内容:', arr_tensor)

运行结果:

tensor类型: 
tensor内容: tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]], dtype=torch.int32)

  

三、numpy.ndarray是啥

作为Python科学计算的基础包,numpy提供了一种快速、高效的多维数组对象 ndarray ,用于存储同类型的数据。它是Python中常用的一个扩展程序库,除了数组,它也提供了大量的数学算法、傅里叶变换以及矩阵运算等功能。

ndarray的主要属性有:

  • ndarray.ndim:表示数组的维度。
  • ndarray.shape:表示数组的形状,如一个 2×3 的数组,其 shape 属性为 (2, 3)。
  • ndarray.size:表示数组的元素个数。
  • ndarray.dtype:表示数组的元素类型。

下面给出一个numpy.ndarray的实例:

import numpy as np

# 定义一个ndarray数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 输出数组的维度、形状、元素个数、元素类型
print('数组的维度:', arr.ndim)
print('数组的形状:', arr.shape)
print('数组的元素个数:', arr.size)
print('数组的元素类型:', arr.dtype)

运行结果:

数组的维度: 2
数组的形状: (3, 3)
数组的元素个数: 9
数组的元素类型: int32

四、使用场景

numpy.ndarray的应用场景非常广泛,主要体现在以下几个方面:

  • 科学计算和数值分析领域,如数值积分、图像处理、信号处理等。
  • 机器学习和深度学习领域中,如图像数据处理、语音识别、自然语言处理等。
  • 社交网络、推荐系统等领域的处理。
  • 其他科学领域,如地球物理、气象学、经济学等。

由于numpy.ndarray数组具有数值计算速度快、占用空间小、灵活多样的特性,因此在科学计算、数据分析和大规模数据处理等领域得到广泛应用。