将列表列表转换为具有多种数据类型的 numpy 数组

2023-12-11

我有一个从文件中读取的列表列表。每个内部列表的长度为 6 个元素,并具有 3 个字符串和 5 个浮点数。如何将此列表列表转换为 numpy 数组?谢谢!


您想要一个结构化数组,它具有一个复合数组dtype:

列表示例:

In [4]: ll = [['one','two',1,1.23],['four','five',4,34.3],['six','seven',4,34.3]]

尝试创建一个常规数组,会生成一个字符串数组:

In [5]: np.array(ll)
Out[5]: 
array([['one', 'two', '1', '1.23'],
       ['four', 'five', '4', '34.3'],
       ['six', 'seven', '4', '34.3']], 
       dtype='|S5')

但是如果我指定一个dtype包含 2 个字符串、一个 int 和一个 float,我得到一个一维结构化数组:

In [8]: np.array([tuple(x) for x in ll],dtype='S5,S5,i,f')
Out[8]: 
array([('one', 'two', 1, 1.2300000190734863),
       ('four', 'five', 4, 34.29999923706055),
       ('six', 'seven', 4, 34.29999923706055)], 
      dtype=[('f0', 'S5'), ('f1', 'S5'), ('f2', '<i4'), ('f3', '<f4')])

请注意,我必须将内部列表转换为元组。这就是结构化数组获取输入以及显示输入的方式。它有助于区分结构化“行”和常规(二维)数组的统一“行”。

这与结构化数组相同genfromtxt or loadtxt读取时产生csv file.

还有其他指定方法dtype,以及将数据加载到此类数组中的其他几种方法。但这是一个开始。


进一步测试,https://stackoverflow.com/a/47774915/901925,表明这个元组转换并不那么耗时。仅仅创建数组就需要更多时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列表列表转换为具有多种数据类型的 numpy 数组 的相关文章

  • 如何打印数组中每个单词之间的空格

    我记得在 w3school 上看到过一个函数 你可以打印出数组的所有单词并在它们之间添加一个空格 但无论我如何谷歌我都找不到它 其外观示例 function printWords var array Car Bus Motorcykle p
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • pyCUDA无法打印结果

    最近 我使用 pip 为我的 python3 4 3 安装 pyCUDA 但我在测试示例代码时发现 https documen tician de pycuda tutorial html getting started https doc
  • 将数组转换为具有默认值的对象的更简洁方法? (洛达什可用)

    我有一个数组 比如说 a b c 我想将其转换为一个对象 该对象以数组值作为键和我可以设置的默认值 所以如果默认值是true 我希望我的输出是 a true b true c true 下面的代码是否有更简洁的版本来实现此目的 var my
  • array_merge 更改键

    我得到以下数组 arr array 6 gt Somedata 7 gt Somedata1 8 gt Somedata2 问题是 当我使用array merge array Select the data arr 它确实将数组键更改为 A
  • 如何构建 if 语句并与各种值进行比较?

    我该怎么写这个if以更好的方式声明条件 if data in 8 downto 1 x 70 or data in 8 downto 1 x 69 or data in 8 downto 1 x 72 or data in 8 downto
  • 为什么java中LinkedList没有initialCapacity?

    我想知道为什么LinkedList没有initialCapacity 我知道什么时候使用ArrayList什么时候LinkedList 定义集合最终大小的好习惯是 List
  • Java中有默认的数字类型吗

    如果我写这样的东西 System out println 18 哪种类型有 18 是吗int or byte 或者它还没有类型 它不能是 int 因为这样的东西是正确的 byte b 3 这是不正确的 int i 3 byte bb i e
  • 在 Python 中绘制正弦曲线的傅里叶变换

    以下 python 程序绘制正弦曲线 import matplotlib pyplot as plt import numpy as np Canvas plt style use ggplot Frequency Oscillations
  • 最小化代表性整数的误差之和

    Given n integers between 0 10000 as D1 D2 Dn where there may be duplicates and n can be huge I want to find k distinct r
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 为什么这两种不同的构造数组的方式会产生不同的行为?

    当我以两种不同的方式构造一个 2 元素数组时 例如a and b 当我将一个元素添加到内部数组之一时 我得到两个不同的结果 这也会发生在append 根据构建每个之后的输出 我希望它们完全相同 julia gt a 2 element Ar
  • PHP CSV VLookup

    我正在寻找一个 PHP 函数 它可以读取 CSV 文件并在第 1 列上执行 vlookup 以回显第 2 列中同一行的相关值 例如 如果 CSV 包含 Name Email John j email protected cdn cgi l
  • Scala:解决“非法循环引用”

    我正在尝试实现一个基于 HashMap 的树 它支持给定根键的 O 1 子树查找 为了实现这个目标 我正在努力做到以下几点 scala gt type Q HashMap Char Q
  • fgetc 无法识别 EOF [重复]

    这个问题在这里已经有答案了 下面的程序在各种 Solaris Linux 版本上运行良好 但在 AIX 上运行不佳 但是 如果我更换while c EOF with while c 0xff 在 AIX 上它运行得很好 有什么想法吗 我检查
  • 通用接口和实现 - 类型无法转换

    我有一个通用接口定义为 public interface ItemService
  • 数组到集合:优化代码

    有更好的方法来实现这一目标吗 public static List
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 字符串/分段错误

    Program to calculate trip and plan flights define TRIP 6 define NAMEMAX 40 define DEST 1 include
  • numpy.cov() 返回意外的输出

    我有一个 X 数据集 有 9 个特征和 683 行 683x9 我想获取这个 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵 我使用np cov originalData generatedData rowvar False 代

随机推荐