20_NumPy数组ndarray和Python标准列表相互转换

20_NumPy数组ndarray和Python标准列表相互转换

NumPy数组ndarray和Python标准列表类型列表可以相互转换。

  • 将列表类型列表转换为NumPy数组ndarray:numpy.array()
  • 将NumPy数组ndarray转换为列表类型列表:tolist()

尽管为方便起见使用了“转换”一词,但实际上会生成一种新型的对象,而原始对象保持不变。

将列表类型列表转换为NumPy数组ndarray:numpy.array()

生成NumPy数组numpy.ndarray如果将Python列表类型对象传递给numpy.array()的参数,则会基于列表生成ndarray

import numpy as np

l_1d = [0, 1, 2]

arr_1d = np.array(l_1d)

print(arr_1d)
print(arr_1d.dtype)
# [0 1 2]
# int64

生成的ndarray的数据类型dtype是自动从原始列表中确定的,但是也可以通过参数dtype来指定。

arr_1d_f = np.array(l_1d, dtype=float)

print(arr_1d_f)
print(arr_1d_f.dtype)
# [0. 1. 2.]
# float64

这同样适用于二维或更多维的多维数组。

l_2d = [[0, 1, 2], [3, 4, 5]]

arr_2d = np.array(l_2d)

print(arr_2d)
# [[0 1 2]
#  [3 4 5]]

由于标准的Python多维数组只是一个嵌套列表(列表列表),因此列表中元素的数量是否不匹配并不重要,但是如果将其原样传递给numpy.array() ,将生成具有列表类型对象的ndarray,该列表类型对象具有不同数量的元素作为元素。

l_2d_error = [[0, 1, 2], [3, 4]]

arr_2d_error = np.array(l_2d_error)

print(arr_2d_error)
# [list([0, 1, 2]) list([3, 4])]

print(arr_2d_error.dtype)
# object

print(arr_2d_error.shape)
# (2,)

将NumPy数组ndarray转换为列表类型列表:tolist()

NumPy数组ndarray的tolist()方法返回一个列表类型对象。

可以根据原始ndarray的维数获得嵌套列表。可以通过重复索引[n]来访问每个元素。

一维。

arr_1d = np.arange(3)

print(arr_1d)
# [0 1 2]

l_1d = arr_1d.tolist()

print(l_1d)
# [0, 1, 2]

二维

arr_2d = np.arange(6).reshape((2, 3))

print(arr_2d)
# [[0 1 2]
#  [3 4 5]]

l_2d = arr_2d.tolist()

print(l_2d)
# [[0, 1, 2], [3, 4, 5]]

三维

arr_3d = np.arange(24).reshape((2, 3, 4))

print(arr_3d)
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]

l_3d = arr_3d.tolist()

print(l_3d)
# [[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]

print(l_3d[0])
# [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

print(l_3d[0][0])
# [0, 1, 2, 3]

print(l_3d[0][0][0])
# 0
### 回答1: 可以使用numpy的array()函数将Python的list转换numpy数组。例如: import numpy as np my_list = [1, 2, 3, 4, 5] my_array = np.array(my_list) print(my_array) 输出结果为: [1 2 3 4 5] ### 回答2: Python的list是一种非常常见的数据结构,用于存储一组有序的数据。而Numpy是一个基于Python语言的科学计算库,其最重要的数据结构是ndarray(即Numpy数组),Numpy数组是一个高效而灵活的多维数组,能够快速完成各种数学运算数组操作。 Python中的list与Numpy数组用法性质不同,因此如果我们需要使用Numpy库的强大功能,就需要将list变为Numpy数组。下面是几种常见的方法: 方法1:使用numpy.array()函数将listNumpy数组。 例如,我们有一个包含5个元素的list:[1,2,3,4,5],我们可以使用以下代码将其转换为一个Numpy数组: import numpy as np my_list = [1,2,3,4,5] my_array = np.array(my_list) print(my_array) 输出结果如下: [1 2 3 4 5] 方法2:使用numpy.asarray()函数将listNumpy数组。 该函数numpy.array()函数的功能类似,但是如果输入参数本身就是Numpy数组,那么返回的依然是Numpy数组,而不是新的数组。例如: import numpy as np my_list = [1,2,3,4,5] my_array = np.asarray(my_list) print(my_array) 输出结果方法1中的相同。 方法3:使用numpy.fromiter()函数将listNumpy数组。 该函数可以从任何一个可迭代对象中构造出一个新的Numpy数组,例如: import numpy as np my_list = [1,2,3,4,5] my_iterator = iter(my_list) my_array = np.fromiter(my_iterator,dtype=float) print(my_array) 输出结果如下: [1. 2. 3. 4. 5.] 从以上三种方式中,我们可以看出,Python的list转换Numpy数组非常简单快捷。通过使用Numpy数组,我们可以利用Numpy库的众多优点,如强大的数学科学计算功能、高效的数据处理能力等,使我们的代码更加简洁高效。 ### 回答3: Python中的列表(list)是其中一个最常用的数据类型之一。在许多情况下,我们需要将列表转换NumPy数组以进行科学计算,因为NumPy数组具有更好的性能更多的功能。 将Python列表转换NumPy数组可以使用NumPy库中的“np.array()”函数完成。该函数接受一个列表作为参数,并返回一个NumPy数组。以下是一个将Python列表转换NumPy数组的例子: ``` import numpy as np my_list = [1, 2, 3, 4, 5] my_array = np.array(my_list) ``` 以上代码将列表“my_list”转换NumPy数组“my_array”。我们可以通过调用“type()”函数来验证它已经成功地转换为一个NumPy数组: ``` print(type(my_array)) ``` 上述代码将输出以下内容: ``` <class 'numpy.ndarray'> ``` 我们可以看到“my_array”现在是一个NumPy数组类型,而不是Python列表类型。NumPy库中的数组Python列表更强大且可以更高效地进行数值计算,因此我们使用NumPy库中的数组可以更加便捷地进行科学计算、数据分析机器学习等操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值