gpt4 book ai didi

python - 需要范围分配的数组类型

转载 作者:行者123 更新时间:2023-12-01 06:01:02 24 4
gpt4 key购买 nike

在 NumPy 中,可以使用 : 作为索引范围的通配符来分配数组的整个段。例如:

>>> (n, m) = (5,5)
>>> a = numpy.array([[0 for i in range(m)] for j in range(n)])
>>> a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])

>>> for i in range(n):
... a[i, :] = [1 for j in range(m)]
>>> a
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])

但是,numpy.array 仅保存数字数据。我需要一个可以容纳任意对象并且可以像 NumPy 数组一样寻址的数组类型。我应该使用什么?

编辑:我希望这种范围赋值语法具有完全的灵 active ,例如这也应该有效:

>>> a[:,1] = 42
>>> a
array([[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1]])

最佳答案

也许我在这里遗漏了一些东西,但 numpy 实际上确实保存了对象和数字。

In [1]: import numpy

In [2]: complex = {'field' : 'attribute'}

In [3]: class ReallyComplex(dict):
...: pass
...:

In [4]: a = numpy.array([complex,ReallyComplex(),0,'this is a string'])

In [5]: a
Out[5]: array([{'field': 'attribute'}, {}, 0, this is a string], dtype=object)
In [6]: subsection = a[2:]

In [7]: subsection
Out[7]: array([0, this is a string], dtype=object)

当您将复杂对象放入 numpy 数组时,dtype 变为object。您可以像使用普通 numpy 数组一样访问数组的成员和切片。我不熟悉序列化,但您可能会遇到该领域的缺点。

如果您确信 numpy 不是正确的选择,那么标准 Python 列表是维护对象集合的好方法,您也可以像 numpy 数组一样对 python 列表进行切片。

 std_list = ['this is a string', 0, {'field' : 'attribute'}]
std_list[2:]

关于python - 需要范围分配的数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com