问题标签 [structured-array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
94 浏览

python - NumPy 中结构化数组组的包含测试

给定一个 ndarray 元组和一个参考数据列表,我正在寻找一种有效的方法来生成一个 ( numpy.isin) 映射 groupby 每个元组的第一个元素的列表的 ndarray。请参见以下示例

initial_list是一个ndarray输入np.loadtxt

预期输出:

我知道我可以通过纯 Python 迭代来实现这一点。内置 NumPy 有什么有效的方法吗?类似于熊猫数据框groupby功能的东西。我的目标是未来的 Jaccard 指数计算。

Python迭代方法:

非常感谢提前

0 投票
1 回答
304 浏览

python - 在 1.16.0 中破坏了结构化到非结构化 numpy 数组的转换

我想将具有相同(np.float)类型的列的 NumPy 结构化数组转换为 Numpy 1.16.0 中的非结构化数组。

以前我是这样做的:

在 1.16.0 中,structured_to_unstructured函数出现在numpy.lib.recfunctions.

但是对于具有对象列的数组的视图structured_to_unstructured,新旧视图方式都会抛出 TypeError: Cannot change data-type for object array.

对于完全没有对象列的结构化数组中的视图,它可以正常工作,但是如果视图中只有由包含对象字段的数组组成的数字列,则会崩溃。

0 投票
2 回答
524 浏览

python - 如何从保存为不同类型的recarray的hdf5(h5py)读取数据?

我正在尝试从 hdf5 文件中读取数据 - 我之前使用 recarray 保存到它。一行数据的类型如下:2x u2(flags) 后跟 2x u4(timestamps) 和 32x u2(data)。

现在我想逐行迭代这个文件的一部分(数据部分 - 最后 32 列),并能够像通常的 numpy.array 一样处理它。

这是有效的,但非常缓慢。我正在寻找一种正确的方法来执行此操作,因为我将处理大数据文件。我也试图弄乱这个:(self.dataset 是从文件加载的 h5py 数据集)

但是当我尝试将 [data_{0}".format(i) for i in range(32)] 代替't0','t1'时它失败了。

我做了几次尝试将数据解析为结构化数组,但到目前为止没有运气。

我应该如何正确尝试阅读过程?我应该更改访问顺序(行前的列)还是有办法在读取行后将这些数据解析为正确的类型?

更新我得到了一些帮助,结果是这样的:我的代码中这么慢的不是为每一行创建列表和解析为 numpy 数组。访问 h5py 文件中的数据是。所以最好一次访问它并一次解析它们。

一旦我使用了该代码,代码的速度几乎提高了 1000 倍。

0 投票
1 回答
274 浏览

python - 从文件构造结构化的numpy数组?

我的任务是在 python 中编写一个简单的 MD-Simulation 程序,它不使用 python 内置类型(dict,list),而只使用 numpy 数组。据我了解,这允许编译代码以更快地运行。在我的代码中的某一时刻,我想从一个类似字典的对象中获取原子的质量,该对象可以通过元素名称(如MassDict['N'] = 14.0067.

根据我的阅读,我需要使用结构化的 numpy 数组。我现在要做的是使用以下表格打开我的文件:

然后构造一个结构化的numpy数组,可以使用第一列中的元素名称对其进行切片。

我尝试制作两个 numpy 数组,然后将它们连接起来,但这似乎不是我需要的。我的代码一开始看起来并不那么好。那么如何创建一个 numpy 对象,该对象可以最佳地从文本文件中按字符串切片?这是我的代码:

0 投票
1 回答
79 浏览

python - 如何返回每个字段/列只有一个值的结构化数组?

我正在尝试构建一个结构化的 numpy 数组,其中包含两个值、一个分数和一个置信度,它们都是浮点数。永远不会有多个分数和多个置信度作为输出,每个只有一个。

但是输出看起来像array([[(0.9 , 0.9 )], [(0.95, 0.95)]], dtype=[('score', '<f8'), ('confidence', '<f8')]).

我不明白为什么它会翻倍。理想情况下,这会返回类似array([(0.9, 0.95)], dtype=[('score', '<f8'), ('confidence', '<f8')]). 此外,可能没有计算分数和置信度,在这种情况下,我也应该能够返回具有相同形状的结构化数组,只是它是空的。您对如何解决我正在做的事情有任何想法,以便解决我讨论的空和非空情况吗?谢谢!

0 投票
3 回答
1020 浏览

python - 使用 numpy 结构化数组而不是 dict 来节省空间并保持速度

numpy结构化数组是 Python 的替代品吗dict

我想节省内存,但我无法承受性能下降太多。

就我而言,键是str,值是int

如果它们实际上是替代品,你能给出一个快速的转换线吗?

我也不介意您是否可以提出不同的选择。

我需要节省内存,因为某些字典的内存大于 50Gb,我需要一次打开多个字典,并且“只有”192 GB RAM 可用。

0 投票
1 回答
45 浏览

python - 用结构化字符串的内容填充结构化数组的比这更 Pythonic(更短/更有效)的方式?

我需要将格式化的字符串放入结构化数组(字符串是 JSON 格式的 2D 表,所有列都是objects)。现在,我这样做:

但这似乎非常冗长。有直接的方法吗?

0 投票
1 回答
124 浏览

python - 如何获得一个名为前两个维度的 3 维数组

我正在使用 Python 3 中的 numpy 库。我想要一个 3 维数组,其中前两个维被命名。

我创建了一个 3 维数组。我想像这样访问数组

我不知道这是否可能。

这是我所做的:

谢谢!

0 投票
1 回答
310 浏览

python - 如何在 numba 中创建结构化标量列表?

错误信息是

没有@jit 它可以正常工作。

我真正想要实现的是创建一个自定义 dtype 标量列表。我尝试了以下替代方案:

  • numpy 数组不适合,因为事先不知道元素的数量,
  • 一个 numpy 向量列表需要太多的数字索引,这是我试图避免的
  • dicts 列表(据说)占用太多内存
  • 与上面列出的任何其他变体相比,一个 numpy 的 jited 类数组太慢了。

更新: 到目前为止我能得到的最远点是:

但它不是一个标量,它是一个大小为 1 的数组(有或没有 @jit)。

更新2:

Recfunctions 还没有被 numba 覆盖。

0 投票
1 回答
104 浏览

python - 如何构建具有 2 个 int 列和 3 个 float 列的 numpy 结构化数组?

我有一个 5 元组列表的数据。前两个是整数索引i, j,接下来三个是浮点数xyz

听说我可以做类似的事情

所以我可以将数组的最后三列作为二维浮点数组访问。例如得到 r = sqrt(x^2 + y^2 + z^2) 我应该可以说

并得到结果

同样的方式

但我尝试过的一切都会导致错误消息

ValueError:无法将长度为 5 的元组分配给具有 2 个字段的结构。

我查看了https://docs.scipy.org/doc/numpy/user/basics.rec.html但如果我的尝试失败的答案在那里,我没有看到它。