”;
An Array is an ordered set of elements which are often specified with squared brackets having comma-separated items. We can create arrays that are −
-
Full or empty
-
Hold values of different types
-
Restricted to values of a specific type
In Julia, arrays are actually mutable type collections which are used for lists, vectors, tables, and matrices. That is why the values of arrays in Julia can be modified with the use of certain pre-defined keywords. With the help of push! command you can add new element in array. Similarly, with the help of splice! function you can add elements in an array at a specified index.
Creating Simple 1D Arrays
Following is the example showing how we can create a simple 1D array −
julia> arr = [1,2,3] 3-element Array{Int64,1}: 1 2 3
The above example shows that we have created a 1D array with 3 elements each of which is a 64-bit integer. This 1D array is bound to the variable arr.
Uninitialized array
We can also specify the type and the dimension of an array by using the below syntax −
Array{type}(dims)
Following is an example of uninitialized array −
julia> array = Array{Int64}(undef, 3) 3-element Array{Int64,1}: 0 0 0 julia> array = Array{Int64}(undef, 3, 3, 3) 3×3×3 Array{Int64,3}: [:, :, 1] = 8 372354944 328904752 3 331059280 162819664 32 339708912 1 [:, :, 2] = 331213072 3 331355760 1 328841776 331355984 -1 328841680 2 [:, :, 3] = 1 0 339709232 164231472 328841872 347296224 328841968 339709152 16842753
Here we placed the type in curly braces and the dimensions in parentheses. We use undef which means that particular array has not been initialized to any known value and thats why we got random numbers in the output.
Arrays of anything
Julia gives us the freedom to create arrays with elements of different types. Let us see the example below in which we are going to create array of an odd mixture — numbers, strings, functions, constants −
julia> [1, "TutorialsPoint.com", 5.5, tan, pi] 5-element Array{Any,1}: 1 "TutorialsPoint.com" 5.5 tan (generic function with 12 methods) π = 3.1415926535897...
Empty Arrays
Just like creating an array of specific type, we can also create empty arrays in Julia. The example is given below −
julia> A = Int64[] Int64[] julia> A = String[] String[]
Creating 2D arrays & matrices
Leave out the comma between elements and you will be getting 2D arrays in Julia. Below is the example given for single row, multi-column array −
julia> [1 2 3 4 5 6 7 8 9 10] 1×10 Array{Int64,2}: 1 2 3 4 5 6 7 8 9 10
Here, 1×10 is the first row of this array.
To add another row, just add a semicolon(;). Let us check the below example −
julia> [1 2 3 4 5 ; 6 7 8 9 10] 2×5 Array{Int64,2}: 1 2 3 4 5 6 7 8 9 10
Here, it becomes 2×5 array.
Creating arrays using range objects
We can create arrays using range objects in the following ways −
Collect() function
First useful function to create an array using range objects is collect(). With the help of colon(:) and collect() function, we can create an array using range objects as follows −
julia> collect(1:5) 5-element Array{Int64,1}: 1 2 3 4 5
We can also create arrays with floating point range objects −
julia> collect(1.5:5.5) 5-element Array{Float64,1}: 1.5 2.5 3.5 4.5 5.5
Let us see a three-piece version of a range object with the help of which you can specify a step size other than 1.
The syntax for the same is given below −
start:step:stop.
Below is an example to build an array with elements that go from 0 to 50 in steps of 5 −
julia> collect(0:5:50) 11-element Array{Int64,1}: 0 5 10 15 20 25 30 35 40 45 50
ellipsis(…) or splat operator
Instead of using collect() function, we can also use splat operator or ellipsis(…) after the last element. Following is an example −
julia> [0:10...] 11-element Array{Int64,1}: 0 1 2 3 4 5 6 7 8 9 10
range() function
Range() is another useful function to create an array with range objects. It goes from start value to end value by taking a specific step value.
For example, let us see an example to go from 1 to 150 in exactly 15 steps −
julia> range(1, length=15, stop=150) 1.0:10.642857142857142:150.0 Or you can use range to take 10 steps from 1, stopping at or before 150: julia> range(1, stop=150, step=10) 1:10:141
We can use range() with collect() to build an array as follows −
julia> collect(range(1, length=15, stop=150)) 15-element Array{Float64,1}: 1.0 11.642857142857142 22.285714285714285 32.92857142857143 43.57142857142857 54.214285714285715 64.85714285714286 75.5 86.14285714285714 96.78571428571429 107.42857142857143 118.07142857142857 128.71428571428572 139.35714285714286 150.0
Creating arrays using comprehensions and generators
Another useful way to create an array is to use comprehensions. In this way, we can create array where each element can produce using a small computation. For example, we can create an array of 10 elements as follows −
julia> [n^2 for n in 1:10] 10-element Array{Int64,1}: 1 4 9 16 25 36 49 64 81 100
We can easily create a 2-D array also as follows −
julia> [n*m for n in 1:10, m in 1:10] 10×10 Array{Int64,2}: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
Similar to comprehension, we can use generator expressions to create an array −
julia> collect(n^2 for n in 1:5) 5-element Array{Int64,1}: 1 4 9 16 25
Generator expressions do not build an array to first hold the values rather they generate the values when needed. Hence they are more useful than comprehensions.
Populating an Array
Following are the functions with the help of which you can create and fill arrays with specific contents −
zeros (m, n)
This function will create matrix of zeros with m number of rows and n number of columns. The example is given below −
julia> zeros(4,5) 4×5 Array{Float64,2}: 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
We can also specify the type of zeros as follows −
julia> zeros(Int64,4,5) 4×5 Array{Int64,2}: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ones (m, n)
This function will create matrix of ones with m number of rows and n number of columns. The example is given below −
julia> ones(4,5) 4×5 Array{Float64,2}: 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
rand (m, n)
As the name suggests, this function will create matrix of random numbers with m number of rows and n number of columns. The example is given below −
julia> rand(4,5) 4×5 Array{Float64,2}: 0.514061 0.888862 0.197132 0.721092 0.899983 0.503034 0.81519 0.061025 0.279143 0.204272 0.687983 0.883176 0.653474 0.659005 0.970319 0.20116 0.349378 0.470409 0.000273225 0.83694
randn(m, n)
As the name suggests, this function will create m*n matrix of normally distributed random numbers with mean=0 and standard deviation(SD)=1.
julia> randn(4,5) 4×5 Array{Float64,2}: -0.190909 -1.18673 2.17422 0.811674 1.32414 0.837096 -0.0326669 -2.03179 0.100863 0.409234 -1.24511 -0.917098 -0.995239 0.820814 1.60817 -1.00931 -0.804208 0.343079 0.0771786 0.361685
fill()
This function is used to fill an array with a specific value. More specifically, it will create an array of repeating duplicate value.
julia> fill(100,5) 5-element Array{Int64,1}: 100 100 100 100 100 julia> fill("tutorialspoint.com",3,3) 3×3 Array{String,2}: "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com" "tutorialspoint.com"
fill!()
It is similar to fill() function but the sign of exclamation (!) is an indication or warning that the content of an existing array is going to be changed. The example is given below:
julia> ABC = ones(5) 5-element Array{Float64,1}: 1.0 1.0 1.0 1.0 1.0 julia> fill!(ABC,100) 5-element Array{Float64,1}: 100.0 100.0 100.0 100.0 100.0 julia> ABC 5-element Array{Float64,1}: 100.0 100.0 100.0 100.0 100.0
Array Constructor
The function Array(), we have studied earlier, can build array of a specific type as follows −
julia> Array{Int64}(undef, 5) 5-element Array{Int64,1}: 294967297 8589934593 8589934594 8589934594 0
As we can see from the output that this array is uninitialized. The odd-looking numbers are memories’ old content.
Arrays of arrays
Following example demonstrates creating arrays of arrays −
julia> ABC = Array[[3,4],[5,6]] 2-element Array{Array,1}: [3, 4] [5, 6]
It can also be created with the help of Array constructor as follows −
julia> Array[1:5,6:10] 2-element Array{Array,1}: [1, 2, 3, 4, 5] [6, 7, 8, 9, 10]
Copying arrays
Suppose you have an array and want to create another array with similar dimensions, then you can use similar() function as follows −
julia> A = collect(1:5); Here we have hide the values with the help of semicolon(;) julia> B = similar(A) 5-element Array{Int64,1}: 164998448 234899984 383606096 164557488 396984416
Here the dimension of array A are copied but not values.
Matrix Operations
As we know that a two-dimensional (2D) array can be used as a matrix so all the functions that are available for working on arrays can also be used as matrices. The condition is that the dimensions and contents should permit. If you want to type a matrix, use spaces to make rows and semicolon(;) to separate the rows as follows −
julia> [2 3 ; 4 5] 2×2 Array{Int64,2}: 2 3 4 5
Following is an example to create an array of arrays (as we did earlier) by placing two arrays next to each other −
julia> Array[[3,4],[5,6]] 2-element Array{Array,1}: [3, 4] [5, 6]
Below we can see what happens when we omit the comma and place columns next to each other −
julia> [[3,4] [5,6]] 2×2 Array{Int64,2}: 3 5 4 6
Accessing the contents of arrays
In Julia, to access the contents/particular element of an array, you need to write the name of the array with the element number in square bracket.
Below is an example of 1-D array −
julia> arr = [5,10,15,20,25,30,35,40,45,50] 10-element Array{Int64,1}: 5 10 15 20 25 30 35 40 45 50 julia> arr[4] 20
In some programming languages, the last element of an array is referred to as -1. However, in Julia, it is referred to as end. You can find the last element of an array as follows −
julia> arr[end] 50
And the second last element as follows −
julia> arr[end-1] 45
To access more than one element at a time, we can also provide a bunch of index numbers as shown below −
julia> arr[[2,5,6]] 3-element Array{Int64,1}: 10 25 30
We can access array elements even by providing true and false −
julia> arr[[true, false, true, true,true, false, false, true, true, false]] 6-element Array{Int64,1}: 5 15 20 25 40 45
Now let us access the elements of 2-D.
julia> arr2 = [10 11 12; 13 14 15; 16 17 18] 3×3 Array{Int64,2}: 10 11 12 13 14 15 16 17 18 julia> arr2[1] 10
The below command will give 13 not 11 as we were expecting.
julia> arr2[2] 13
To access row1, column2 element, we need to use the command below −
julia> arr2[1,2] 11
Similarly, for row1 and column3 element, we have to use the below command −
julia> arr2[1,3] 12
We can also use getindex() function to obtain elements from a 2-D array −
julia> getindex(arr2,1,2) 11 julia> getindex(arr2,2,3) 15
Adding Elements
We can add elements to an array in Julia at the end, at the front and at the given index using push!(), pushfirst!() and splice!() functions respectively.
At the end
We can use push!() function to add an element at the end of an array. For example,
julia> push!(arr,55) 11-element Array{Int64,1}: 5 10 15 20 25 30 35 40 45 50 55
Remember we had 10 elements in array arr. Now push!() function added the element 55 at the end of this array.
The exclamation(!) sign represents that the function is going to change the array.
At the front
We can use pushfirst!() function to add an element at the front of an array. For example,
julia> pushfirst!(arr,0) 12-element Array{Int64,1}: 0 5 10 15 20 25 30 35 40 45 50 55
At a given index
We can use splice!() function to add an element into an array at a given index. For example,
julia> splice!(arr,2:5,2:6) 4-element Array{Int64,1}: 5 10 15 20 julia> arr 13-element Array{Int64,1}: 0 2 3 4 5 6 25 30 35 40 45 50 55
Removing Elements
We can remove elements at last position, first position and at the given index, from an array in Julia, using pop!(), popfirst!() and splice!() functions respectively.
Remove the last element
We can use pop!() function to remove the last element of an array. For example,
julia> pop!(arr) 55 julia> arr 12-element Array{Int64,1}: 0 2 3 4 5 6 25 30 35 40 45 50
Removing the first element
We can use popfirst!() function to remove the first element of an array. For example,
julia> popfirst!(arr) 0 julia> arr 11-element Array{Int64,1}: 2 3 4 5 6 25 30 35 40 45 50
Removing element at given position
We can use splice!() function to remove the element from a given position of an array. For example,
julia> splice!(arr,5) 6 julia> arr 10-element Array{Int64,1}: 2 3 4 5 25 30 35 40 45 50
”;