Or, instead of iterating across the whole array, and selecting those elements which are at the edge, you can have some number of loops which go over just the edges.
E.g. you can have 4 loops
for(int i=0;i < 5;i++) { doSomething (array[0][i]); // top edge } for(int i=0;i < 5;i++) { doSomething (array[4][i]); // bottom edge } for(int i=0;i < 5;i++) { doSomething (array[i][0]); // left edge } for(int i=0;i < 5;i++) { doSomething (array[i][4]); // right edge }(Note that you might want to be a bit cleverer since these loops process each corner twice)
Or you could have 2 loops
for(int i=0;i < 5;i++) { doSomething (array[0][i]); // top edge doSomething (array[4][i]); // bottom edge } for(int i=0;i < 5;i++) { doSomething (array[i][0]); // left edge doSomething (array[i][4]); // right edge }again, watch the corners.
For square array you can even have a single loop
for(int i=0;i < 5;i++) { doSomething (array[0][i]); // top edge doSomething (array[4][i]); // bottom edge doSomething (array[i][0]); // left edge doSomething (array[i][4]); // right edge }corners are trickier here.
The bigger the array, then the more elements are not edges. So for very big arrays, going over the whole thing and skipping over non-edges, will be increasingly inefficient.
A two dimensional array, paramOne, holds integer values ranging from 1 to 10. Consider the following method:
public int exampleMethod(int[][] paramOne) { int row; int column; int varOne; int max = 0; for(row = 0; row < paramOne.length; row++) { for(column = 0; column < paramOne[0].length; column++) { varOne = paramOne[row][column]; if(varOne > max){ max = varOne; } } } return max; }What does this method compute?
The maximum value in paramOne.
The column with the greatest value.
The most frequent value in paramOne.
The two largest values in paramOne.
The sum of all the values in paramOne.
Numpy (abbreviation for ‘Numerical Python‘) is a library for performing large scale mathematical operations in fast and efficient manner. This article serves to educate you about methods one could use to iterate over columns in an 2D NumPy array. Since a single dimensional array only consists of linear elements, there doesn’t exists a distinguished definition of rows and columns in them. Therefore, in order to perform such operations we need a array whose len(ary.shape) > 1 . To install NumPy on your python environment, type the following code in your OS’s Command Processor (CMD, Bash etc):
pip install numpy
We would be taking a look at several methods of iterating over a column of an Array/Matrix:-
METHOD 1: CODE: Use of primitive 2D Slicing operation on an array to get the desired column/columns
Python3
import numpy as np
ary = np.arange(1, 25, 1)
ary = ary.reshape(5, 5)
print(ary)
for col in range(ary.shape[1]):
print(ary[:, col])
Output:
[[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]]) [ 0 5 10 15 20] [ 1 6 11 16 21] [ 2 7 12 17 22] [ 3 8 13 18 23] [ 4 9 14 19 24]Explanation: In the above code, we firstly create an linear array of 25 elements (0-24) using np.arange(25). Then we reshape (transform 1D to 2D) using np.reshape() to create a 2D array out of a linear array. Then we output the transformed array. Now we used a for loop which would iterate x times (where x is the number of columns in the array) for which we used range() with the argument ary.shape[1] (where shape[1] = number of columns in a 2D symmetric array). In each iteration we output a column out of the array using ary[:, col] which means that give all elements of the column number = col.
METHOD 2: In this method we would transpose the array to treat each column element as a row element (which in turn is equivalent of column iteration).
Code:
Python3
import numpy as np
ary = np.array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
for col in ary.T:
print(col)
Output:
[ 0 5 10 15 20] [ 1 6 11 16 21] [ 2 7 12 17 22] [ 3 8 13 18 23] [ 4 9 14 19 24]Explanation: Firstly, we created an 2D array (same as the previous example) using np.array() and initialized it with 25 values. Then we transposed the array, using ary.T which in turn switches the rows with the columns and columns with the rows. Then we iterated over each row of this transposed array and printed the row values.