What is the difference between sub and slice function in Julia?

In Julia, both the sub and slice functions are used for the manipulation of arrays, but they have different purposes and behaviors. It is better to know the difference between sub and slice in Julia because of the following reasons:

  • The slice function is generally faster for simple slicing while sub offers more flexibility, but it might be slower. Using the right function ensures that our code performs optimally.

  • Misusing sub or slice functions can make our code confusing for ourselves and others. Selecting the appropriate function based on the task improves code readability.

  • The slice function retains dimensions with scalar indexes, meaning that if you provide a single value (a scalar) as an index for a particular dimension, that dimension will be kept in the resulting slice, and others will be dropped. It can lead to errors in data manipulation if not taken care of. Understanding the difference helps us write code that produces the intended output.

In essence, knowing the difference between sub and slice empowers us to write Julia code that is efficient, clear, and error-free. This allows us to focus on extracting valuable insights from the data without getting stuck in technical complexities.

The slice function

The slice function is simpler and focuses on extracting contiguousElements that are next to each other. sub-arrays based on integer indexes. It retains any dimensions with scalar indexesNumerical index and drops the others, effectively reducing dimensionality.

Working of the slice() function
Working of the slice() function

Arrays in Julia can have multiple dimensions, like a 2D array representing a table or a 3D array for a volume of data. When we use slice with a scalar index, it extracts a single element along a particular dimension. However, slice also removes any dimensions that have only one element left after the extraction.

This effectively reduces the dimensionality of the resulting sub-array.

# Import necessary libraries (if required)
using Base
# 1D array example
original_array_1d = [10, 20, 30, 40, 50, 60] # A simple 1D array
# Slicing a 1D array (from index 2 to 4, inclusive)
sliced_array_1d = original_array_1d[2:4]
# Printing original and sliced 1D array
println("Original 1D Array: ", original_array_1d)
println("Sliced 1D Array (Index 2 to 4): ", sliced_array_1d)
# 2D array example
original_array_2d = [
[1 2 3];
[4 5 6];
[7 8 9]
] # A 3x3 matrix
# Slicing a 2D array (get all rows, but only columns 1 and 2)
sliced_array_2d = original_array_2d[:, 1:2]
# Printing original and sliced 2D array
println("Original 2D Array:")
println(original_array_2d)
println("Sliced 2D Array (All rows, columns 1 and 2):")
println(sliced_array_2d)

The sub function

The sub functions deal with extracting or creating subarrays from existing arrays. The difference from slice is that it allows more flexibility. It will enable us to use indexes, ranges, and boolean masks to define the desired subset.

Working of the sub() function
Working of the sub() function
# Original array
myArray = [1, 5, 3, 7, 9]
# Extract elements from an array with an index
sub_array_1 = sub(myArray, 2)
println(sub_array_1) # Output: 5
# Extract elements from an array in a range from index 2 (inclusive) to 4 (inclusive)
sub_array_2 = sub(myArray, 2:4)
println(sub_array_2) # Output: [5, 3, 7]
# Extract elements greater than 5
mask = myArray .> 5
sub_array_3 = sub(myArray, mask)
println(sub_array_3) # Output: [7, 9]

The sub function is handy for complex extractions from data. On the other hand, slice is a simpler and faster tool, perfect for basic cutting or slicing of data. Learning to use both effectively enables us to write Julia code that’s efficient and easy to understand for tasks involving data manipulation.

Test your knowledge!

1

Give the value of sub_arr for the following code:

arr = [1, 2, 1, 3, 1, 3, 5, 2, 1, 0]

mask = arr .< 2
sub_arr = sub(arr, mask)
A)

[1, 1, 1, 1, 0]

B)

[0]

C)

[3, 1, 3, 5, 2, 1, 0]

D)

[1, 3, 1, 3, 5, 2, 1, 0]

Question 1 of 20 attempted

Julia, being similar to python, offers extensive data science and analysis opportunities. It has inbuilt functions like sub() and slice() that are powerful enough to handle most data science applications, without needing any external libraries like numpy or pandas.

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved