有没有办法将属性链接到数组坐标

时间:2017-10-10 18:44:18

标签: python numpy

创建10x10x10坐标网格

#10x10x10
x = np.arange(0,10)
y = np.arange(0,10)
z = np.arange(0,10)

coordinates= []

#makes coordinates for the 10x10x10
for i in range(len(x)):
    for j in range(len(y)):
        for k in range(len(z)):
            coordinates.append((x[i], y[j], z[k]))

所以这是我的代码,其坐标从(0,0,0),(0,0,1)......到(9,9,9)。

我希望能够将每个坐标视为具有信息的对象。例如(0,0,0)有1个苹果,2个橙子,3个柠檬。 (0,0,1)有1个苹果,0个橘子0个柠檬,依此类推。有没有办法存储链接到每个坐标的信息?

2 个答案:

答案 0 :(得分:1)

您可以使用坐标创建一个字典,并使每个条目成为包含所需信息的字典:

#10x10x10
x = np.arange(0,10)
y = np.arange(0,10)
z = np.arange(0,10)

coordinates = {}
#makes coordinates for the 10x10x10
for i in range(len(x)):
    for j in range(len(y)):
        for k in range(len(z)):
            obj_in_coord = {
                'apples': 4,
                'oranges': 2,
                'lemons': 6
            }
            coordinates[(x[i], y[j], z[k])] = obj_in_coord
print coordinates[(2,3,7)]['apples']  # outputs 4

如果你这样离开,当然,每个坐标都会有4个苹果,2个橙子和6个柠檬。您应该在创建obj_in_coord时应用逻辑。

要使用整数访问信息,只需将obj_in_coord更改为列表:

#10x10x10
x = np.arange(0,10)
y = np.arange(0,10)
z = np.arange(0,10)

coordinates = {}
#makes coordinates for the 10x10x10
for i in range(len(x)):
    for j in range(len(y)):
        for k in range(len(z)):
            info_in_coord = [4, 2, 6]
            coordinates[(x[i], y[j], z[k])] = info_in_coord
print coordinates[(2,3,7)][0]  # outputs 4

答案 1 :(得分:1)

你可以维持一个dict来获得水果,关键是坐标

fruits = {(0,0,0):{'apples':1, 'oranges':2, 'lemons':3},
          }

fruits = {(0,0,0):[1, 2, 3],
          }