为什么?np.数组转换为数组列表及其元素?

2024-04-19 22:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新手,这段代码中有一些我不明白的地方:

import numpy as np

a_list = []
sub_list = ["apple", "banana", "cherry"]

a_list.append(sub_list)

print(type(a_list))
print(type(a_list[0]))
print(type(sub_list))

array = np.array(a_list)

print(type(array))
print(type(array[0]))
print(type(sub_list))
print(array[0])

当我运行它时,我得到以下输出:

<class 'list'>
<class 'list'>
<class 'list'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'list'>
['apple' 'banana' 'cherry']

为什么type(array[0])也是numpy.ndarray?不是应该列个单子吗?你知道吗


Tags: 代码importnumpyappletype地方nparray
1条回答
网友
1楼 · 发布于 2024-04-19 22:20:51
In [36]:  
    ...: a_list = [] 
    ...: sub_list = ["apple", "banana", "cherry"] 
    ...:  
    ...: a_list.append(sub_list)                                                
In [37]: arr = np.array(a_list)                                                 
In [38]: a_list                                                                 
Out[38]: [['apple', 'banana', 'cherry']]
In [39]: arr                                                                    
Out[39]: array([['apple', 'banana', 'cherry']], dtype='<U6')
In [40]: arr[0]                                                                 
Out[40]: array(['apple', 'banana', 'cherry'], dtype='<U6')
In [41]: arr.shape                                                              
Out[41]: (1, 3)

np.array尝试从其输入创建多维数组。a_list是一个嵌套列表,它可以从中生成二维数组。arr[0]是一个一维数组,从arr中选择。你知道吗

arr不是列表数组。它是一个字符串元素数组。你知道吗

可以创建包含列表的数组:

In [42]: arr1 = np.empty(1, object)                                             
In [43]: arr1                                                                   
Out[43]: array([None], dtype=object)
In [44]: arr1[0]=sub_list                                                       
In [45]: arr1                                                                   
Out[45]: array([list(['apple', 'banana', 'cherry'])], dtype=object)
In [46]: arr1[0]                                                                
Out[46]: ['apple', 'banana', 'cherry']

但在大多数情况下,这比列表a_list好一点,在某些方面更糟(例如,你不能.append)。你知道吗

从嵌套列表生成二维数组的典型示例:

In [47]: np.array([[1,2,3],[4,5,6]])                                            
Out[47]: 
array([[1, 2, 3],
       [4, 5, 6]])
In [48]: _.shape                                                                
Out[48]: (2, 3)

这个纯数字数组上的数学运算要比包含列表的对象数据类型数组快得多。Python已经有了嵌套列表。你知道吗

相关问题 更多 >