问题标签 [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.
python - PYTHON:检查和编辑结构化数组中的元素(如果存在)的最快方法是什么?
我对非常大的数据集有一些问题。我需要找到一种可靠且快速的方法来查找/替换结构化数组中的条目。我正在寻找一种不循环所有条目的解决方案。我知道 C 有快速的解决方案,但我不知道如何在 python 中解决这个问题。我也想知道是否有为此目的的 numpy 函数!
我正在使用 Python 2.7.13 和 numpy 1.12.1!
任务:通过从中的中心列表中data_centrals
找到孤儿的卤素,将孤儿的
所有位置设置为 的位置。data_orphan
data_centrals
已编辑:可以在 此处下载包含 200 个对象的数据子样本!它的结构由dt给出:第一列 --> hostid,第二列 --> z_pos等。它可以复制/粘贴到 python shell 或脚本中......
您可以在下面找到设置位置的代码。
问题:是否有聪明的方法来搜索卤化物并设置位置而不循环所有条目data_orphan
?
python - 从列表创建结构化数组
我有一个简单的元素列表,我正在尝试从中创建一个结构化数组。
这种天真的方法失败了:
将每个元素放在一个元组中:
如果我首先从列表中创建一个数组,它也可以工作:
我有点疑惑。后者如何工作,但numpy
在提供简单列表时无法解决问题?
推荐的方法是什么?创建该中间体array
可能不会对性能产生很大的影响,但这不是次优的吗?
我也很惊讶那些不起作用:
我是结构化数组的新手,我不记得numpy
对输入类型有那么挑剔。一定有什么我错过了。
python - 将数据列添加到只有一行的 numpy rec 数组
我需要将一列数据添加到 numpy rec 数组中。我在这里看到了很多答案,但它们似乎不适用于只包含一行的 rec 数组......
假设我有一个 rec 数组x
:
我想将该值附加4
到具有自己的字段名称和数据类型的新列中,例如
如果我尝试使用正常append_fields
方法添加一列;
然后我最终得到
事实证明,对于只有一行的 rec 数组,len(x)
不起作用,而x.size
确实起作用。如果我改为使用np.hstack()
,我会得到TypeError: invalid type promotion
,如果我尝试np.c_
,我会得到不想要的结果
python - 结构化 2D Numpy 数组:设置列名和行名
我正在尝试找到一种采用 2d numpy 数组并将列名和行名作为结构化数组附加的好方法。例如:
我已经能够使用这样设置列:
这让我可以做,matrix[2]['a']
但现在我想重命名行,这样我就可以做matrix['3']['a']
。
python - NumPy recfunctions join_by TypeError
当我尝试将“uint16”字段加入 NumPy 1.11 或 1.12(Python 3.5)中的结构化数组时遇到 TypeError。
这是错误:
如果我使用“float16”,则不会出现同样的问题。
这只是一个错误吗?或者有什么方法可以防止这个问题?
python - 如何写入结构化数组中的单个字段而不会收到警告
如果字段包含floats
. 但是,即使我一个接一个地遍历每个字段,我也会收到警告。
执行最后一行后会弹出:
FutureWarning:Numpy 检测到您(可能正在)写入由 numpy.diagonal 返回的数组或通过选择结构化数组中的多个字段。此代码可能会在未来的 numpy 版本中中断 - 有关详细信息,请参阅 numpy.diagonal 或 arrays.indexing 参考文档。快速解决方法是进行显式复制(例如,执行 arr.diagonal().copy() 或 arr[['f0','f1']].copy())。data[dt] = (data[dt] - 表示) / stds
我可以在调试器中逐行运行它,以确保一切都符合预期,例如:
按照警告消息中的建议,复制数组有效:
摆脱警告的更优雅的方法是什么?在这种情况下,副本发生了什么变化?
arrays - 在 python 中,有没有更好的方法将字段添加到结构化的 numpy 数组中
我使用的代码虽然有效,但会发出警告信息。下面给出...
FutureWarning:具有不同字段名称的结构化数组之间的分配将在 numpy 1.14 中更改。
以前 dst 中的字段将设置为 src 中同名字段的值。在 numpy 1.14 中,字段将改为“按位置”分配:dst 的第 N 个字段将设置为 src 数组的第 N 个字段。
有关详细信息,请参阅发行说明
我该怎么做才能注意警告消息。不让它沉默。
python - 在 NumPy 1.14 中将结构化数组的切片转换为常规 NumPy 数组
注1:在我的情况下,这个问题的答案都不起作用。
注意 2:该解决方案必须在 NumPy 1.14 中工作。
假设我有以下结构化数组:
arr = np.array([(105.0, 34.0, 145.0, 217.0)], dtype=[('a', 'f4'), ('b', 'f4'), ('c', 'f4'), ('d', 'f4')])
.
现在我正在像这样切片结构化数据类型:
arr2 = arr[['a', 'b']]
现在我正在尝试将该切片转换为常规数组:
out = arr2[0].view((np.float32, 2))
这导致
ValueError: Changing the dtype of a 0d array is only supported if the itemsize is unchanged
我想得到的只是一个像这样的常规数组:
[105.0, 34.0]
请注意,此示例已简化,以使其最小化。在我的真实用例中,我显然不是在处理包含一个元素的数组。
我知道这个解决方案有效:
out = np.asarray(list(arr2[0]))
但我认为必须有一个更有效的解决方案,而不是将已经在 NumPy 数组中的数据复制到列表中,然后再复制回数组中。我认为有一种方法可以留在 NumPy 中,并且可能根本不复制任何数据,我只是不知道如何。
python - 完全嵌套 NumPy 结构化标量
在 NumPy 文档和其他 StackOverflow 问题中,提到了嵌套的 NumPy 结构化标量。在我所看到的任何地方,他们似乎都将嵌套结构化标量描述为包含另一个标量(显然)的标量,但内部标量始终是另一个 dtype。我想做的是能够拥有一个 NumPy dtype,它具有作为它的字段之一,它是自己的 dtype。
一个简单的例子是表示树节点的 dtype,它将存储一些值(如整数)和另一个表示它的父节点的树节点。
似乎这应该使用 numpy.void 来完成,但我无法使用如下的 dtype 来完成:
numpy - 如何在 python 多进程之间共享 numpy 结构化数组?
我有一个numpy 结构化数组,其 dtype 具有不同数据类型的多个字段。我想在我的python multiprocesses中更新这个结构化的 numpy 数组。我想我会使用Pool。我可以用什么方式来共享这个 numpy 结构化数组?
我已经阅读了一些关于在Ctype Array中包装 numpy 数组的页面,但我认为没有合适的 ctype 。
我可以将此数组作为指针传递吗?我还想在cython中将该函数编写为工作进程。
代码示例如下: