4

ブール値フラグの 4 次元配列を追跡する方法が必要です。真/偽の値のみ。numpy はそのようなことを行う標準的な方法のようですが、実際に対処したいよりもインストールが複雑に思えます。(複数の OS 環境で作業する必要があります。)

では、海よりも深くスパゲッティの山を掘ることなく、4 次元配列から True/False 値を保存および取得できる簡単な方法または単純なモジュールはありますか?

リストのリストのリストのリストを作成することもできますが、それはかなり不器用に思えます。

4

5 に答える 5

3

4 次元オブジェクトを格納して取得することだけが必要な場合は、おそらく dict を使用します。

In [7]: x = {}

# store
In [8]: x[1,2,3,4] = True

# get
In [9]: x[1,2,3,4]
Out[9]: True
于 2013-02-19T14:25:51.593 に答える
3

配列がまばらな場合 (まれな True 値); あなたが使用することができますcollections.defaultdict

from collections import defaultdict

a = defaultdict(bool)
a[i,j,k,m] = True
于 2013-02-19T14:26:01.370 に答える
1

numpy 配列の代わりに python リストを使用して、多次元配列を生成できます。

何かのようなもの:

values = [[[[True, False, False], [False, False, False], ...]]]

numpy 配列の他のどの機能を使用しますか? かなりの数が必要な場合は、ほとんどのプラットフォームに簡単にインストールできます。ほとんどの Linux ディストリビューションには、パッケージ管理スキームのどこかにそれがあり、Windows 用の「次、次、次、インストール」インストーラーがあり、PIP などを使用して OS X にインストールできます。

他の人が示唆しているように、代わりにdict、またはおそらくdefaultdictタプルを使用してインデックスを作成することです。

values = {}

values[1, 2, 3, 4] = True
...
于 2013-02-19T14:23:17.957 に答える
0
from collections import defaultdict
def make(depth):
    return defaultdict(lambda: make(depth - 1)) if depth > 1 else False

>>> d = defaultdict(lambda: make(4))     
>>> d[1][2][3][4] = True
>>> d[1][2][3][4] 
True
>>> d[1][2][3][2]
False
>>> d[1][2][3]
defaultdict(<function <lambda> at 0x10d08d488>, {2: False, 4: True})
于 2013-02-19T14:52:39.670 に答える
0

のようなものはどうですか

def make_array(shape):
    data = False
    while len(shape) > 0:
        data = [data for x in range(shape[-1])]
        shape.pop()
    return data



>>> make_array([3,4,5])
[[[False, False, False, False, False], [False, False, False, False, False], [False, False, False, False
, False], [False, False, False, False, False]], [[False, False, False, False, False], [False, False, Fa
lse, False, False], [False, False, False, False, False], [False, False, False, False, False]], [[False,
 False, False, False, False], [False, False, False, False, False], [False, False, False, False, False],
 [False, False, False, False, False]]]
>>> 

shape[0]出力形状を転置することができます。もちろん、これは「空の」配列を取得するだけです。

于 2013-02-19T14:25:25.853 に答える