I have a ndarray which calls `pairs`

looks like this:

you can see every elements in the ndarray is an array which length is 2.

Now I want to convert

`pairs`

to a list of tuples and add the list to an graph，but I can’t find a fast method to complete this.

I have used this code to convert：

```
for i in range(0, len(pairs)):
pairs[i] = tuple(pairs[i])
```

but there is no any change in `pairs`

ndarray, so how to change my code? Thanks for very much.

You can use numpy arrays directly. `Graph(pairs)`

should work for creating a graph. If it does not, please show a complete minimal example, and include your numpy and igraph versions.

1 Like

This is my crash report：

ig_path_test.py:58: in build_graph

total_graph.add_edges(pairs)

graph = <igraph.Graph object at 0x000002C86F83BC40>

es = array([[ 1, 4],

[ 1, 2],

[ 2, 4],

…,

[77912, 77911],

[77912, 48205],

[77912, 48130]], dtype=int64)

attributes = None

```
def _add_edges(graph, es, attributes=None):
"""Adds some edges to the graph.
@param es: the list of edges to be added. Every edge is represented
with a tuple containing the vertex IDs or names of the two
endpoints. Vertices are enumerated from zero.
@param attributes: dict of sequences, all of length equal to the
number of edges to be added, containing the attributes of the new
edges.
"""
eid = graph.ecount()
```

```
res = GraphBase.add_edges(graph, es)
```

```
E igraph._igraph.InternalError: Error at src/graph/type_indexededgelist.c:261: Out-of-range vertex IDs when adding edges. -- Invalid vertex ID
```

Oh，the method can pass the test：

`total_graph = ig.Graph(pairs, directed=True)`

But why `add_edges`

fails？

This error will occur when you pass invalid vertex IDs to `add_edges()`

. Valid IDs are between `0`

and `g.vcount() - 1`

(inclusive).

If you want to create a graph from an edge list, do not use `add_edges()`

. Use the `Graph`

constructor instead, which will automatically determine the appropriate vertex count.

If there are further problems, please include a short but *complete* reproducer according to the guidelines here: How to create a Minimal, Reproducible Example - Help Center - Stack Overflow Be sure to mention your igraph version (ideally use the latest version).

Simple way to create graph from edge list:

```
In [4]: g1 = ig.Graph([(0,1), (1,2)])
```

You can also do this:

```
In [5]: g2 = ig.Graph()
```

This graph has no vertices:

```
In [6]: g2.vcount()
Out[6]: 0
```

Thus e.g. vertex ID `2`

is not valid.

```
In [7]: g2.add_edges([(0,1), (1,2)])
InternalError: Error at src/graph/type_indexededgelist.c:261: Out-of-range vertex IDs when adding edges. -- Invalid vertex ID
```

You need to add at least 3 vertices in order for vertex ID `2`

to be valid.

```
In [8]: g2.add_vertices(3)
In [9]: g2.add_edges([(0,1), (1,2)])
```