2017-02-10 2 views
0

Я создал матрицу с 4 основными сведениями о узлах графика, которые я хочу манипулировать, и я пытаюсь сохранить их как массив массивов. и с ассоциативным массивом приказано итерацию по определенной информацииnumpy matrix from array - python

это матрица с моей информаций

nodes = [[0 for x in range(4)] for y in range(n)] 
for i in range(nodeNumber+1): 
    nodes[i] = info1[i], info2[i] , info[3] , i 

Как я создать такую ​​же матрицу с NumPy?

я пытался создать матрицу из моих «узлов», но это, как я имею массив кортежей, а не матрица, а NumPy не видит его как один

ответ

0
In [114]: n=3 
In [115]: nodes = [[0 for x in range(4)] for y in range(n)] 
In [116]: nodes 
Out[116]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 

Так у вас есть создал список, который содержит списки

In [117]: for i in range(3): 
    ...:  nodes[i] = 1,2,3,i 
    ...:  
In [118]: nodes 
Out[118]: [(1, 2, 3, 0), (1, 2, 3, 1), (1, 2, 3, 2)] 

Теперь вы заменили каждый элемент списка nodes с кортежем (1,2,3,1). Это полная замена. Он не изменяет подписок nodes. Итак, теперь nodes - это список кортежей.

In [119]: np.array(nodes) 
Out[119]: 
array([[1, 2, 3, 0], 
     [1, 2, 3, 1], 
     [1, 2, 3, 2]]) 

Проходя, что через np.array создает 2d массив, независимо от того, является ли список списков или список кортежей.

Если подсписки или кортежи отличаются по длине, вы получите что-то еще - 1d-массив объекта dtype.

Вы должны быть более конкретными относительно того, что вы подразумеваете под array of arrays и associative array.