列表与数组的转化
创始人
2024-05-29 04:29:09
0

目录

  • 用np.array(a)将列表转换为数组
  • 列表转数组的特殊情况(一)
  • 列表转数组的特殊情况(二)
  • 针对子元素个数不一致的解决办法
  • 用a.tolist()函数将数组转化为列表

在python的学习中,经常会用到数组与列表的相互转化,本文主要介绍下关于数组与列表转化的问题。

用np.array(a)将列表转换为数组

程序显示:

import numpy as np
import randoma=[[[random.randint(1,9) for x in range(5)]for i in range(3)]for j in range(2)]
print(type(a))
print(a)b=np.array(a)
print(type(b))
print(b)

输出的结果为:

[[[2, 2, 1, 3, 5], [9, 6, 3, 7, 2], [4, 9, 7, 2, 5]], [[6, 4, 9, 4, 9], [1, 4, 7, 2, 5], [2, 6, 3, 6, 7]]][[[2 2 1 3 5][9 6 3 7 2][4 9 7 2 5]][[6 4 9 4 9][1 4 7 2 5][2 6 3 6 7]]]

由上面的结果可以看出很顺利就完成了列表到数组的转化。

列表转数组的特殊情况(一)

import numpy as np
import randomf=[]
e=[random.randint(1,9) for x in range(5)]
f.append(np.array(e))
g=[random.randint(1,9) for x in range(5)]
f.append(g)
print(f)
f1=np.array(f, dtype=object)
print("转为数组后:")
print(f1)

结果显示为:

[array([7, 3, 7, 4, 2]), [7, 9, 8, 1, 5]]转为数组后:[[7 3 7 4 2][7 9 8 1 5]]

可以看出原来程序中的f是既含有数组类型,又含有列表类型。由于数组和列表的长度是一样的,所以可以顺利将f的所有数据全部转化为数组型,得到的f1。

说到这里,那么就会想到,如果一个列表中含有多个子列表,子列表中的数据量不完全相同,那么结果会怎样呢?

列表转数组的特殊情况(二)

import numpy as np
import randomf=[]
e=[random.randint(1,9) for x in range(5)]
f.append(np.array(e))
# 此处做了修改
g=[random.randint(1,9) for x in range(4)]
f.append(g)
print(f)
f1=np.array(f, dtype=object)
print("转为数组后:")
print(f1)
print(len(f))

这次运行后得到的显示为:

[array([7, 5, 3, 9, 4]), [8, 7, 9, 1]]转为数组后:[array([7, 5, 3, 9, 4]) list([8, 7, 9, 1])]2

我们可以发现,运行的结果虽然没有问题,但是得到的新的f1却不是我们想要的,我们希望f1里面包含9个元素,但是通过len(f1)可以看到只有2个元素了。

由此可以看到,要想通过np.array函数将上面程序中的情况转化为数组,需要保证每个f中的每个子元素中含的子元素个数相同。

针对子元素个数不一致的解决办法

import numpy as np
import randomf=[]
e=[random.randint(1,9) for x in range(5)]
f.append(np.array(e))
# 此处做了修改
g=[random.randint(1,9) for x in range(4)]
f.append(g)
print(f)
f1=np.array(f, dtype=object)
print("转为数组后:")
print(f1)
print(len(f))print("重新转化")
f1=f1[0].tolist()+f1[1]
print(f1)
print(len(f1))

运行后的结果显示:


[array([5, 8, 6, 4, 5]), [1, 4, 3, 6]]
转为数组后:
[array([5, 8, 6, 4, 5]) list([1, 4, 3, 6])]
2
重新转化
[5, 8, 6, 4, 5, 1, 4, 3, 6]
9

可以看出这次成功得到想要的结果了。

由于在进行多重列表转数组时会因为子列表中元素个数不一样从而导致出错,所以在此进行一下总结。

用a.tolist()函数将数组转化为列表

通过上面的例子就可以看到,博主将f1中的第一个子元素(是一个数组)转化为了列表。

在此再用一个程序来说明:

import numpy as np
import randoma=[random.randint(1,9) for x in range(5)]
a_array=np.array(a)
print(a_array)
print(type(a_array))
a_list=(a_array).tolist()
print(a_list)
print(type(a_list))

结果显示为:

[6 1 9 3 1]

[6, 1, 9, 3, 1]

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...