如何在不使用numpy的情况下创建多维数组
我需要一种方法来跟踪一个四维的布尔数组,也就是只包含真(True)和假(False)这两种值。听说使用numpy是处理这类事情的标准方法,但安装起来似乎比我想象的要复杂得多。(我需要在多个操作系统环境中工作。)
那么,有没有简单的方法或者模块,可以让我在一个四维数组中存储和获取真/假值,而不至于让自己陷入一团乱麻呢?
我可以用列表嵌套列表再嵌套列表的方式来实现,但这样看起来有点笨重。
5 个回答
1
你可以直接用Python的列表来代替numpy数组,生成一个多维数组。
比如这样:
values = [[[[True, False, False], [False, False, False], ...]]]
你还会用到numpy数组的哪些其他功能呢?如果你需要的功能比较多,安装numpy在大多数平台上都很简单。大部分Linux系统的包管理里都有这个,Windows上有个“下一步,下一步,下一步,安装”的安装程序,而在OS X上你可以用PIP或者类似的工具来安装。
正如其他人提到的,另一种选择是使用一个dict
(字典),或者可能用defaultdict
,然后用一个元组来索引它:
values = {}
values[1, 2, 3, 4] = True
...
3
如果你只想存储和获取一个四维对象的数据,或许可以使用字典(dict):
In [7]: x = {}
# store
In [8]: x[1,2,3,4] = True
# get
In [9]: x[1,2,3,4]
Out[9]: True
3
如果这个数组是稀疏的,也就是说里面的“真”值很少,你可以使用 collections.defaultdict
这个工具。
from collections import defaultdict
a = defaultdict(bool)
a[i,j,k,m] = True