]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | A simple tutorial on Arrays |
2 | =========================== | |
3 | ||
4 | Let's start with a simple tutorial to create and modify arrays. | |
5 | ||
6 | Get the necessary headers for numpy components and set up necessary namespaces:: | |
7 | ||
8 | #include <boost/python/numpy.hpp> | |
9 | #include <iostream> | |
10 | ||
11 | namespace p = boost::python; | |
12 | namespace np = boost::python::numpy; | |
13 | ||
14 | Initialise the Python runtime, and the numpy module. Failure to call these results in segmentation errors:: | |
15 | ||
16 | int main(int argc, char **argv) | |
17 | { | |
18 | Py_Initialize(); | |
19 | np::initialize(); | |
20 | ||
21 | ||
22 | Zero filled n-dimensional arrays can be created using the shape and data-type of the array as a parameter. Here, the shape is 3x3 and the datatype is the built-in float type:: | |
23 | ||
24 | p::tuple shape = p::make_tuple(3, 3); | |
25 | np::dtype dtype = np::dtype::get_builtin<float>(); | |
26 | np::ndarray a = np::zeros(shape, dtype); | |
27 | ||
28 | You can also create an empty array like this :: | |
29 | ||
30 | np::ndarray b = np::empty(shape,dtype); | |
31 | ||
32 | Print the original and reshaped array. The array a which is a list is first converted to a string, and each value in the list is extracted using extract< >:: | |
33 | ||
34 | std::cout << "Original array:\n" << p::extract<char const *>(p::str(a)) << std::endl; | |
35 | ||
36 | // Reshape the array into a 1D array | |
37 | a = a.reshape(p::make_tuple(9)); | |
38 | // Print it again. | |
39 | std::cout << "Reshaped array:\n" << p::extract<char const *>(p::str(a)) << std::endl; | |
40 | } | |
41 |