Ruthie  Bugala

Ruthie Bugala

1678104787

TOP 20 Most Impressive Photoshop Actions

We all know the power of Photoshop, you’ll regularly see the results of its use on magazine covers and in advertising campaigns. But it’s much more than just a tool for touching up and beautifying images, it’s also a powerful piece of software for creating artwork and manipulating photographs to bend them to the artists will. We’ve tracked down a number of brilliant Photoshop actions from Graphicriver to show you just how impressive the results can be. Will you believe your eyes?

Glow Fx Tool

Glow Fx Tool - Photoshop Action

These effect is professionally designed to give your images a magic and remarkable tone, enabling you to streamline your editing process and enhance your images. All of our products have been tested on a variety of images and they are very versatile. As photographers ourselves we use these tools to speed up our workflow, and give our images a creative edge, take your shots to the next level of fantasy using this action. This action allow you to create a wonderful artwork from your photos.

Download

Dreamer

Plugin works well with absolutely any kind of photographs: people, animals, buildings, objects, etc. Also, it doesn’t matter image size, image resolution and image color mode – the result will be your unique abstract painting with a lot of details for improve and customization.

Download

Vector Converter Avatar

Vector Converter - Avatar - Photoshop Plugin

Photoshop plugin, that enables you to convert any raster image into vector style and fully editable true vector shapes

Download

Retro Poster

Retro Poster - Photoshop Action

Awesome Photoshop action to create poster print designs that can take your brand to a whole new level, leaving your competition in the dust.

Download

Gif Animated Confetti

Gif Animated Confetti Glitter Effect Photoshop Action

So you want to create Birthday app and want to throw some confetti on the user then this action is made for you.

Download

Advance Rainbow Stripe

Advance Rainbow Stripe Action

This is an advance and complex Photoshop image action for creating stripe color effect with different particles. Several filters were professionally combined in order to achieve this effect. No pattern is required. Action will automatically blend your image in one-click.

Download

Watercolor Illustration

Watercolor Illustration Photoshop Action

This action was made in a clean watercolor style. The action is pretty simple for use and again, has 2 versions – Heavy version and Soft version. Action works well with landscapes and architecture, portraits, and still life.

Download

Pastel

Pastel Photoshop Action

The action will do all the work for you, leaving you fully layered and customizable results that you can further modify. Every element is a single layer. The action will also create 35 color looks that you can choose from.

Download

Cortisol

Cortisol Photoshop Action

Create this cool effect on your photos with just a few clicks. Make neat looking posters, ads, banners, presentations – save days of work. You get unique result every time you run the action. How cool is that?

Download

Palette Knife

Palette Knife Photoshop Action

Save hours of work with this action. The optimal size for processing will be photos 4000×4000 pixels and 300 DPI. After action finish the work you get a well-organized and structured file with the many layers, folders and settings to improve the final result.

Download

Animated Fire

Animated Fire 2 Photoshop Action

Use the built-in action to choose from 100 animated looping fire elements and include them in your Photoshop document, over your image. Render to animated GIF or video directly from Photoshop. Easily extend the 1 second initial video duration (looping) and upload looping cinemagraphs to Instagram. Fire elements can also be used in After Effects or Premiere.

Download

The Otaku

The Otaku Photoshop Plugin v1.4

The Otaku is a professional Photoshop plugin that will help you to convert your photo to modern Chinese Artwork in a few clicks and in minutes. With the modern UI design plugin panel and the powerful techniques of the action script, you can improve your artwork and use it in a multi-niche like social media, album covers, posters, printing artworks, and more!

Download

Face Swap

Face Swap - Photoshop Actions

This set of actions will guide you through the face swap process in 3 easy steps. It will automatically generate the face blending effect and add several adjustment layers that can be used to tweak the output.

Download

Cyberpunk

Cyberpunk Photoshop Action

Cyberpunk Photoshop Action will transform your photos into a cool very popular neon cyberpunk color grading with a varied combination of hot pinks and bright blues. The script is intelligently crafted to give a better end-user experience. You can simply run it on any of your images and the action will do the rest.

Download

Digital Painting

Digital Painting Photoshop Action

This is completely different from other Marketplace wall painting action, Auto color options auto-setting options in your photo will bring you a nice look with a single click, It has been used in a featured, which you have not seen before in any other action, With 100% grant, we can tell you that you will be circumcision using the action, The advanced color tone that we’re using is very attractive and good looking. Its very easy to find that you can easily make your photo colorful, Using the Advanced Wall Painting Action, you can easily give your photo the look of the wallpaper ,People, Landscape, Flower, Animal, Effect is different for all these topics,

Download

Photo Tracer Pro!

Photo Tracer Pro! - Vector Maker

Photo Tracer Pro will transform your photos into beautiful hand traced vector sketches in a single click.

Download

Wet Watercolor

Wet Watercolor Photoshop Action

Diffluent, transparent and soft strokes seep into each other and give unexpected combinations.
Artistic smudges and spreadings, random colorful stains and textures will give your image a real magic.

Download

Street Drawing

Street Drawing Photoshop Action

Create new style Portraits and showcase them on your Instagram.

Download

Rainy Day

Rainy Day Photoshop Action

Create a dramatic composition from your photos with just a few clicks! Rainy Day Photoshop Action perfectly works with portraits and indoor photos. You can use your own reflection images, easy create ‘steamy glass’ effect with your own drawings. Action contains 5 color options, You save hours of work with this action.

Download

Water Reflection

Water Reflection Photoshop Action

Want to transform a amazing effect of “Water Reflection Photoshop Action” from any photos or image with one click? This is amazing and time saving.

Download

Fashion Sketch

Fashion Sketch Photoshop Action

Ease of use, many prepared background layers with different brushes and textures will give your painting fullness. The action creates ready-made solutions and when you need more precise manual work, take our prepared exclusive brushes and start creating! Just select one of the signed layers, select any of our exclusive brushes and paint where you want and how you want!

Download

Signature

Signature - B&W Vector CS4+ Photoshop Action

Transform your photos into abstract ink splash artwork! Just few steps and minutes and you will get the best portrait for instagram, black and white wallpaper, abstract picture for placing on the wall and more. Convert your result to vector graphics and you can print it on t-shirt, use as a cover for your disc or book etc.

Download

Original article sourced at: https://bashooka.com

#photoshop #adobe 

What is GEEK

Buddha Community

TOP 20 Most Impressive Photoshop Actions
Ray  Patel

Ray Patel

1619571780

Top 20 Most Useful Python Modules or Packages

 March 25, 2021  Deepak@321  0 Comments

Welcome to my blog, In this article, we will learn the top 20 most useful python modules or packages and these modules every Python developer should know.

Hello everybody and welcome back so in this article I’m going to be sharing with you 20 Python modules you need to know. Now I’ve split these python modules into four different categories to make little bit easier for us and the categories are:

  1. Web Development
  2. Data Science
  3. Machine Learning
  4. AI and graphical user interfaces.

Near the end of the article, I also share my personal favorite Python module so make sure you stay tuned to see what that is also make sure to share with me in the comments down below your favorite Python module.

#python #packages or libraries #python 20 modules #python 20 most usefull modules #python intersting modules #top 20 python libraries #top 20 python modules #top 20 python packages

RobustStats.jl: A Collection Of Robust Statistical Tests in Julia

RobustStats

This package contains a variety of functions from the field robust statistical methods. Many are estimators of location or dispersion; others estimate the standard error or the confidence intervals for the location or dispresion estimators, generally computed by the bootstrap method.

Many functions in this package are based on the R package WRS (an R-Forge repository) by Rand Wilcox. Others were contributed by users as needed. References to the statistics literature can be found below.

This package requires Compat, Rmath, Dataframes, and Distributions. They can be installed automatically, or by invoking Pkg.add("packagename").

Estimators

Location estimators:

  • tmean(x, tr=0.2) - Trimmed mean: mean of data with the lowest and highest fraction tr of values omitted.
  • winmean(x, tr=0.2)- Winsorized mean: mean of data with the lowest and highest fraction tr of values squashed to the 20%ile or 80%ile value, respectively.
  • tauloc(x) - Tau measure of location by Yohai and Zamar.
  • onestep(x) - One-step M-estimator of location using Huber's ψ
  • mom(x) - Modified one-step M-estimator of location (MOM)
  • bisquareWM(x) - Mean with weights given by the bisquare rho function.
  • huberWM(x) - Mean with weights given by Huber's rho function.
  • trimean(x) - Tukey's trimean, the average of the median and the midhinge.

Dispersion estimators:

  • winvar(x, tr=0.2) - Winsorized variance.
  • wincov(x, y, tr=0.2) - Winsorized covariance.
  • pbvar(x) - Percentage bend midvariance.
  • bivar(x) - Biweight midvariance.
  • tauvar(x) - Tau measure of scale by Yohai and Zamar.
  • iqrn(x) - Normalized inter-quartile range (normalized to equal σ for Gaussians).
  • shorthrange(x) - Length of the shortest closed interval containing at least half the data.
  • scaleQ(x) - Normalized Rousseeuw & Croux Q statistic, from the 25%ile of all 2-point distances.
  • scaleS(x) - Normalized Rousseeuw & Croux S statistic, from the median of the median of all 2-point distances.
  • shorthrange!(x), scaleQ!(x), and scaleS!(x) are non-copying (that is, x-modifying) forms of the above.

Confidence interval or standard error estimates:

  • trimse(x) - Standard error of the trimmed mean.
  • trimci(x) - Confidence interval for the trimmed mean.
  • msmedse(x) - Standard error of the median.
  • binomci(s,n) - Binomial confidence interval (Pratt's method).
  • acbinomci(s,n) - Binomial confidence interval (Agresti-Coull method).
  • sint(x) - Confidence interval for the median (with optional p-value).
  • momci(x) - Confidence interval of the modified one-step M-estimator of location (MOM).
  • trimpb(x) - Confidence interval for trimmed mean.
  • pcorb(x) - Confidence intervale for Pearson's correlation coefficient.
  • yuend - Compare the trimmed means of two dependent random variables.
  • bootstrapci(x, est=f) - Compute a confidence interval for estimator f(x) by bootstrap methods.
  • bootstrapse(x, est=f) - Compute a standard error of estimator f(x) by bootstrap methods.

Utility functions:

  • winval(x, tr=0.2) - Return a Winsorized copy of the data.
  • idealf(x) - Ideal fourths, interpolated 1st and 3rd quartiles.
  • outbox(x) - Outlier detection.
  • hpsi(x) - Huber's ψ function.
  • contam_randn - Contaminated normal distribution (generates random deviates).
  • _weightedhighmedian(x) - Weighted median (breaks ties by rounding up). Used in scaleQ.

Recommendations:

For location, consider the bisquareWM with k=3.9σ, if you can make any reasonable guess as to the "Gaussian-like width" σ (see dispersion estimators for this). If not, trimean is a good second choice, though less efficient. Also, though the author personally has no experience with them, tauloc, onestep, and mom might be useful.

For dispersion, the scaleS is a good general choice, though scaleQ is very efficient for nearly Gaussian data. The MAD is the most robust though less efficient. If scaleS doesn't work, then shorthrange is a good second choice.

The first reference on scaleQ and scaleS (below) is a lengthy discussion of the tradeoffs among scaleQ, scaleS, shortest half, and median absolute deviation (MAD, see BaseStats.mad for Julia implementation). All four have the virtue of having the maximum possible breakdown point, 50%. This means that replacing up to 50% of the data with unbounded bad values leaves the statistic still bounded. The efficiency of Q is better than S and S is better than MAD (for Gaussian distributions), and the influence of a single bad point and the bias due to a fraction of bad points is only slightly larger on Q or S than on MAD. Unlike MAD, the other three do not implicitly assume a symmetric distribution.

To choose between Q and S, the authors note that Q has higher statistical efficiency, but S is typically twice as fast to compute and has lower gross-error sensitivity. An interesting advantage of Q over the others is that its influence function is continuous. For a rough idea about the efficiency, the large-N limit of the standardized variance of each quantity is 2.722 for MAD, 1.714 for S, and 1.216 for Q, relative to 1.000 for the standard deviation (given Gaussian data). The paper gives the ratios for Cauchy and exponential distributions, too; the efficiency advantages of Q are less for Cauchy than for the other distributions.

Examples

#Set up a sample dataset:
x=[1.672064, 0.7876588, 0.317322, 0.9721646, 0.4004206, 1.665123, 3.059971, 0.09459603, 1.27424, 3.522148,
   0.8211308, 1.328767, 2.825956, 0.1102891, 0.06314285, 2.59152, 8.624108, 0.6516885, 5.770285, 0.5154299]

julia> mean(x)     #the mean of this dataset
1.853401259

tmean: trimmed mean

julia> tmean(x)            #20% trimming by default
1.2921802666666669

julia> tmean(x, tr=0)      #no trimming; the same as the output of mean()
1.853401259

julia> tmean(x, tr=0.3)    #30% trimming
1.1466045875000002

julia> tmean(x, tr=0.5)    #50% trimming, which gives you the median of the dataset.
1.1232023

winval: winsorize data

That is, return a copy of the input array, with the extreme low or high values replaced by the lowest or highest non-extreme value, repectively. The fraction considered extreme can be between 0 and 0.5, with 0.2 as the default.

julia> winval(x)           #20% winsorization; can be changed via the named argument `tr`.
20-element Any Array:
 1.67206
 0.787659
 0.400421
 0.972165
 ...
 0.651689
 2.82596
 0.51543

winmean, winvar, wincov: winsorized mean, variance, and covariance

julia> winmean(x)          #20% winsorization; can be changed via the named argument `tr`.
1.4205834800000001
julia> winvar(x)
0.998659015947531
julia> wincov(x, x)
0.998659015947531
julia> wincov(x, x.^2)
3.2819238397424004

trimse: estimated standard error of the trimmed mean

julia> trimse(x)           #20% winsorization; can be changed via the named argument `tr`.
0.3724280347984342

trimci: (1-α) confidence interval for the trimmed mean

Can be used for paired groups if x consists of the difference scores of two paired groups.

julia> trimci(x)                 #20% winsorization; can be changed via the named argument `tr`.
(1-α) confidence interval for the trimmed mean

Degrees of freedom:   11
Estimate:             1.292180
Statistic:            3.469611
Confidence interval:  0.472472       2.111889
p value:              0.005244

idealf: the ideal fourths:

Returns (q1,q3), the 1st and 3rd quartiles. These will be a weighted sum of the values that bracket the exact quartiles, analogous to how we handle the median of an even-length array.

julia> idealf(x)
(0.4483411416666667,2.7282743333333332)

pbvar: percentage bend midvariance

A robust estimator of scale (dispersion). See NIST ITL webpage for more.

julia> pbvar(x)
2.0009575278957623

bivar: biweight midvariance

A robust estimator of scale (dispersion). See NIST ITL webpage for more.

julia> bivar(x)
1.5885279811329132

tauloc, tauvar: tau measure of location and scale

Robust estimators of location and scale, with breakdown points of 50%.

See Yohai and Zamar JASA, vol 83 (1988), pp 406-413 and Maronna and Zamar Technometrics, vol 44 (2002), pp. 307-317.

julia> tauloc(x)       #the named argument `cval` is 4.5 by default.
1.2696652567510853
julia> tauvar(x)
1.53008203090696

outbox: outlier detection

Use a modified boxplot rule based on the ideal fourths; when the named argument mbox is set to true, a modification of the boxplot rule suggested by Carling (2000) is used.

julia> outbox(x)
Outlier detection method using
the ideal-fourths based boxplot rule

Outlier ID:         17
Outlier value:      8.62411
Number of outliers: 1
Non-outlier ID:     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20

msmedse: Standard error of the median

Return the standard error of the median, computed through the method recommended by McKean and Schrader (1984).

julia> msmedse(x)
0.4708261134886094

binomci(), acbinomci(): Binomial confidence interval

Compute the (1-α) confidence interval for p, the binomial probability of success, given s successes in n trials. Instead of s and n, can use a vector x whose values are all 0 and 1, recording failure/success one trial at a time. Returns an object.

binomci uses Pratt's method; acbinomci uses a generalization of the Agresti-Coull method that was studied by Brown, Cai, & DasGupta.

julia> binomci(2, 10)           # # of success and # of total trials are provided. By default alpha=.05
p_hat:               0.2000
confidence interval: 0.0274   0.5562
Sample size          10


julia> trials=[1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0]
julia> binomci(trials, alpha=0.01)    #trial results are provided in array form consisting of 1's and 0's.
 p_hat:               0.5000
 confidence interval: 0.1768   0.8495
 Sample size          12

julia> acbinomci(2, 10)           # # of success and # of total trials are provided. By default alpha=.05
p_hat:               0.2000
confidence interval: 0.0459   0.5206
Sample size          10

sint()

Compute the confidence interval for the median. Optionally, uses the Hettmansperger-Sheather interpolation method to also estimate a p-value.

julia> sint(x)
Confidence interval for the median

 Confidence interval:  0.547483       2.375232

julia> sint(x, 0.6)
Confidence interval for the median with p-val

 Confidence interval:  0.547483       2.375232
 p value:              0.071861

hpsi

Compute Huber's ψ. The default bending constant is 1.28.

julia> hpsi(x)
20-element Array{Float64,1}:
1.28
0.787659
0.317322
0.972165
0.400421
...

onestep

Compute one-step M-estimator of location using Huber's ψ. The default bending constant is 1.28.

julia> onestep(x)
1.3058109021286803

bootstrapci, bootstrapse

Compute a bootstrap, (1-α) confidence interval (bootstrapci) or a standard error (bootstrapse) for the measure of location corresponding to the argument est. By default, the median is used. Default α=0.05.

julia> ci = bootstrapci(x, est=onestep, nullvalue=0.6)
 Estimate:             1.305811
 Confidence interval:  0.687723       2.259071
 p value:              0.026000


julia> se = bootstrapse(x, est=onestep)
0.41956761772722817

mom and mom!

Returns a modified one-step M-estimator of location (MOM), which is the unweighted mean of all values not more than (bend times the mad(x)) away from the data median.

julia> mom(x)
1.2596462322222222

momci

Compute the bootstrap (1-α) confidence interval for the MOM-estimator of location based on Huber's ψ. Default α=0.05.

julia> momci(x, seed=2, nboot=2000, nullvalue=0.6)
Estimate:             1.259646
Confidence interval:  0.504223       2.120979
p value:              0.131000

contam_randn

Create contaminated normal distributions. Most values will by from a N(0,1) zero-mean unit-variance normal distribution. A fraction epsilon of all values will have k times the standard devation of the others. Default: epsilon=0.1 and k=10.

julia> srand(1);
julia> std(contam_randn(2000))
3.516722458797104

trimpb

Compute a (1-α) confidence interval for a trimmed mean by bootstrap methods.

julia> trimpb(x, nullvalue=0.75)
 Estimate:             1.292180
 Confidence interval:  0.690539       2.196381
 p value:              0.086000

pcorb

Compute a .95 confidence interval for Pearson's correlation coefficient. This function uses an adjusted percentile bootstrap method that gives good results when the error term is heteroscedastic.

julia> pcorb(x, x.^5)
 Estimate:             0.802639
 Confidence interval:  0.683700       0.963478

yuend

Compare the trimmed means of two dependent random variables using the data in x and y. The default amount of trimming is 20%.

julia> srand(3)
julia> y2 = randn(20)+3;
julia> yuend(x, y2)

Comparing the trimmed means of two dependent variables.

Sample size:          20
Degrees of freedom:   11
Estimate:            -1.547776
Standard error:       0.460304
Statistic:           -3.362507
Confidence interval: -2.560898      -0.534653
p value:              0.006336

Unmaintained functions

See UNMAINTAINED.md for information about functions that the maintainers have not yet understood but also not yet deleted entirely.

References

Percentage bend and related estimators come from L.H. Shoemaker and T.P. Hettmansperger "Robust estimates and tests for the one- and two-sample scale models" in Biometrika Vol 69 (1982) pp. 47-53.

Tau measures of location and scale are from V.J. Yohai and R.H. Zamar "High Breakdown-Point Estimates of Regression by Means of the Minimization of an Efficient Scale" in J. American Statistical Assoc. vol 83 (1988) pp. 406-413.

The outbox(..., mbox=true) modification was suggested in K. Carling, "Resistant outlier rules and the non-Gaussian case" in Computational Statistics and Data Analysis vol 33 (2000), pp. 249-258. doi:10.1016/S0167-9473(99)00057-2

The estimate of the standard error of the median, msmedse(x), is computed by the method of J.W. McKean and R.M. Schrader, "A comparison of methods for studentizing the sample median" in Communications in Statistics: Simulation and Computation vol 13 (1984) pp. 751-773. doi:10.1080/03610918408812413

For Pratt's method of computing binomial confidence intervals, see J.W. Pratt (1968) "A normal approximation for binomial, F, Beta, and other common, related tail probabilities, II" J. American Statistical Assoc., vol 63, pp. 1457- 1483, doi:10.1080/01621459.1968.10480939. Also R.G. Newcombe "Confidence Intervals for a binomial proportion" Stat. in Medicine vol 13 (1994) pp 1283-1285, doi:10.1002/sim.4780131209.

For the Agresti-Coull method of computing binomial confidence intervals, see L.D. Brown, T.T. Cai, & A. DasGupta "Confidence Intervals for a Binomial Proportion and Asymptotic Expansions" in Annals of Statistics, vol 30 (2002), pp. 160-201.

Shortest Half-range comes from P.J. Rousseeuw and A.M. Leroy, "A Robust Scale Estimator Based on the Shortest Half" in Statistica Neerlandica Vol 42 (1988), pp. 103-116. doi:10.1111/j.1467-9574.1988.tb01224.x . See also R.D. Martin and R. H. Zamar, "Bias-Robust Estimation of Scale" in Annals of Statistics Vol 21 (1993) pp. 991-1017. doi:10.1214/aoe/1176349161

Scale-Q and Scale-S statistics are described in P.J. Rousseeuw and C. Croux "Alternatives to the Median Absolute Deviation" in J. American Statistical Assoc. Vo 88 (1993) pp 1273-1283. The time-efficient algorithms for computing them appear in C. Croux and P.J. Rousseeuw, "Time-Efficient Algorithms for Two Highly Robust Estimators of Scale" in Computational Statistics, Vol I (1992), Y. Dodge and J. Whittaker editors, Heidelberg, Physica-Verlag, pp 411-428. If link fails, see ftp://ftp.win.ua.ac.be/pub/preprints/92/Timeff92.pdf


Download Details:

Author: Mrxiaohe
Source Code: https://github.com/mrxiaohe/RobustStats.jl 
License: MIT license

#julia #statistical #tests 

Connor Mills

Connor Mills

1670560264

Understanding Arrays in Python

Learn how to use Python arrays. Create arrays in Python using the array module. You'll see how to define them and the different methods commonly used for performing operations on them.
 

The artcile covers arrays that you create by importing the array module. We won't cover NumPy arrays here.

Table of Contents

  1. Introduction to Arrays
    1. The differences between Lists and Arrays
    2. When to use arrays
  2. How to use arrays
    1. Define arrays
    2. Find the length of arrays
    3. Array indexing
    4. Search through arrays
    5. Loop through arrays
    6. Slice an array
  3. Array methods for performing operations
    1. Change an existing value
    2. Add a new value
    3. Remove a value
  4. Conclusion

Let's get started!


What are Python Arrays?

Arrays are a fundamental data structure, and an important part of most programming languages. In Python, they are containers which are able to store more than one item at the same time.

Specifically, they are an ordered collection of elements with every value being of the same data type. That is the most important thing to remember about Python arrays - the fact that they can only hold a sequence of multiple items that are of the same type.

What's the Difference between Python Lists and Python Arrays?

Lists are one of the most common data structures in Python, and a core part of the language.

Lists and arrays behave similarly.

Just like arrays, lists are an ordered sequence of elements.

They are also mutable and not fixed in size, which means they can grow and shrink throughout the life of the program. Items can be added and removed, making them very flexible to work with.

However, lists and arrays are not the same thing.

Lists store items that are of various data types. This means that a list can contain integers, floating point numbers, strings, or any other Python data type, at the same time. That is not the case with arrays.

As mentioned in the section above, arrays store only items that are of the same single data type. There are arrays that contain only integers, or only floating point numbers, or only any other Python data type you want to use.

When to Use Python Arrays

Lists are built into the Python programming language, whereas arrays aren't. Arrays are not a built-in data structure, and therefore need to be imported via the array module in order to be used.

Arrays of the array module are a thin wrapper over C arrays, and are useful when you want to work with homogeneous data.

They are also more compact and take up less memory and space which makes them more size efficient compared to lists.

If you want to perform mathematical calculations, then you should use NumPy arrays by importing the NumPy package. Besides that, you should just use Python arrays when you really need to, as lists work in a similar way and are more flexible to work with.

How to Use Arrays in Python

In order to create Python arrays, you'll first have to import the array module which contains all the necassary functions.

There are three ways you can import the array module:

  1. By using import array at the top of the file. This includes the module array. You would then go on to create an array using array.array().
import array

#how you would create an array
array.array()
  1. Instead of having to type array.array() all the time, you could use import array as arr at the top of the file, instead of import array alone. You would then create an array by typing arr.array(). The arr acts as an alias name, with the array constructor then immediately following it.
import array as arr

#how you would create an array
arr.array()
  1. Lastly, you could also use from array import *, with * importing all the functionalities available. You would then create an array by writing the array() constructor alone.
from array import *

#how you would create an array
array()

How to Define Arrays in Python

Once you've imported the array module, you can then go on to define a Python array.

The general syntax for creating an array looks like this:

variable_name = array(typecode,[elements])

Let's break it down:

  • variable_name would be the name of the array.
  • The typecode specifies what kind of elements would be stored in the array. Whether it would be an array of integers, an array of floats or an array of any other Python data type. Remember that all elements should be of the same data type.
  • Inside square brackets you mention the elements that would be stored in the array, with each element being separated by a comma. You can also create an empty array by just writing variable_name = array(typecode) alone, without any elements.

Below is a typecode table, with the different typecodes that can be used with the different data types when defining Python arrays:

TYPECODEC TYPEPYTHON TYPESIZE
'b'signed charint1
'B'unsigned charint1
'u'wchar_tUnicode character2
'h'signed shortint2
'H'unsigned shortint2
'i'signed intint2
'I'unsigned intint2
'l'signed longint4
'L'unsigned longint4
'q'signed long longint8
'Q'unsigned long longint8
'f'floatfloat4
'd'doublefloat8

Tying everything together, here is an example of how you would define an array in Python:

import array as arr 

numbers = arr.array('i',[10,20,30])


print(numbers)

#output

#array('i', [10, 20, 30])

Let's break it down:

  • First we included the array module, in this case with import array as arr .
  • Then, we created a numbers array.
  • We used arr.array() because of import array as arr .
  • Inside the array() constructor, we first included i, for signed integer. Signed integer means that the array can include positive and negative values. Unsigned integer, with H for example, would mean that no negative values are allowed.
  • Lastly, we included the values to be stored in the array in square brackets.

Keep in mind that if you tried to include values that were not of i typecode, meaning they were not integer values, you would get an error:

import array as arr 

numbers = arr.array('i',[10.0,20,30])


print(numbers)

#output

#Traceback (most recent call last):
# File "/Users/dionysialemonaki/python_articles/demo.py", line 14, in <module>
#   numbers = arr.array('i',[10.0,20,30])
#TypeError: 'float' object cannot be interpreted as an integer

In the example above, I tried to include a floating point number in the array. I got an error because this is meant to be an integer array only.

Another way to create an array is the following:

from array import *

#an array of floating point values
numbers = array('d',[10.0,20.0,30.0])

print(numbers)

#output

#array('d', [10.0, 20.0, 30.0])

The example above imported the array module via from array import * and created an array numbers of float data type. This means that it holds only floating point numbers, which is specified with the 'd' typecode.

How to Find the Length of an Array in Python

To find out the exact number of elements contained in an array, use the built-in len() method.

It will return the integer number that is equal to the total number of elements in the array you specify.

import array as arr 

numbers = arr.array('i',[10,20,30])


print(len(numbers))

#output
# 3

In the example above, the array contained three elements – 10, 20, 30 – so the length of numbers is 3.

Array Indexing and How to Access Individual Items in an Array in Python

Each item in an array has a specific address. Individual items are accessed by referencing their index number.

Indexing in Python, and in all programming languages and computing in general, starts at 0. It is important to remember that counting starts at 0 and not at 1.

To access an element, you first write the name of the array followed by square brackets. Inside the square brackets you include the item's index number.

The general syntax would look something like this:

array_name[index_value_of_item]

Here is how you would access each individual element in an array:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers[0]) # gets the 1st element
print(numbers[1]) # gets the 2nd element
print(numbers[2]) # gets the 3rd element

#output

#10
#20
#30

Remember that the index value of the last element of an array is always one less than the length of the array. Where n is the length of the array, n - 1 will be the index value of the last item.

Note that you can also access each individual element using negative indexing.

With negative indexing, the last element would have an index of -1, the second to last element would have an index of -2, and so on.

Here is how you would get each item in an array using that method:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers[-1]) #gets last item
print(numbers[-2]) #gets second to last item
print(numbers[-3]) #gets first item
 
#output

#30
#20
#10

How to Search Through an Array in Python

You can find out an element's index number by using the index() method.

You pass the value of the element being searched as the argument to the method, and the element's index number is returned.

import array as arr 

numbers = arr.array('i',[10,20,30])

#search for the index of the value 10
print(numbers.index(10))

#output

#0

If there is more than one element with the same value, the index of the first instance of the value will be returned:

import array as arr 


numbers = arr.array('i',[10,20,30,10,20,30])

#search for the index of the value 10
#will return the index number of the first instance of the value 10
print(numbers.index(10))

#output

#0

How to Loop through an Array in Python

You've seen how to access each individual element in an array and print it out on its own.

You've also seen how to print the array, using the print() method. That method gives the following result:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers)

#output

#array('i', [10, 20, 30])

What if you want to print each value one by one?

This is where a loop comes in handy. You can loop through the array and print out each value, one-by-one, with each loop iteration.

For this you can use a simple for loop:

import array as arr 

numbers = arr.array('i',[10,20,30])

for number in numbers:
    print(number)
    
#output
#10
#20
#30

You could also use the range() function, and pass the len() method as its parameter. This would give the same result as above:

import array as arr  

values = arr.array('i',[10,20,30])

#prints each individual value in the array
for value in range(len(values)):
    print(values[value])

#output

#10
#20
#30

How to Slice an Array in Python

To access a specific range of values inside the array, use the slicing operator, which is a colon :.

When using the slicing operator and you only include one value, the counting starts from 0 by default. It gets the first item, and goes up to but not including the index number you specify.


import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#get the values 10 and 20 only
print(numbers[:2])  #first to second position

#output

#array('i', [10, 20])

When you pass two numbers as arguments, you specify a range of numbers. In this case, the counting starts at the position of the first number in the range, and up to but not including the second one:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])


#get the values 20 and 30 only
print(numbers[1:3]) #second to third position

#output

#rray('i', [20, 30])

Methods For Performing Operations on Arrays in Python

Arrays are mutable, which means they are changeable. You can change the value of the different items, add new ones, or remove any you don't want in your program anymore.

Let's see some of the most commonly used methods which are used for performing operations on arrays.

How to Change the Value of an Item in an Array

You can change the value of a specific element by speficying its position and assigning it a new value:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#change the first element
#change it from having a value of 10 to having a value of 40
numbers[0] = 40

print(numbers)

#output

#array('i', [40, 20, 30])

How to Add a New Value to an Array

To add one single value at the end of an array, use the append() method:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 to the end of numbers
numbers.append(40)

print(numbers)

#output

#array('i', [10, 20, 30, 40])

Be aware that the new item you add needs to be the same data type as the rest of the items in the array.

Look what happens when I try to add a float to an array of integers:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 to the end of numbers
numbers.append(40.0)

print(numbers)

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 19, in <module>
#   numbers.append(40.0)
#TypeError: 'float' object cannot be interpreted as an integer

But what if you want to add more than one value to the end an array?

Use the extend() method, which takes an iterable (such as a list of items) as an argument. Again, make sure that the new items are all the same data type.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integers 40,50,60 to the end of numbers
#The numbers need to be enclosed in square brackets

numbers.extend([40,50,60])

print(numbers)

#output

#array('i', [10, 20, 30, 40, 50, 60])

And what if you don't want to add an item to the end of an array? Use the insert() method, to add an item at a specific position.

The insert() function takes two arguments: the index number of the position the new element will be inserted, and the value of the new element.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 in the first position
#remember indexing starts at 0

numbers.insert(0,40)

print(numbers)

#output

#array('i', [40, 10, 20, 30])

How to Remove a Value from an Array

To remove an element from an array, use the remove() method and include the value as an argument to the method.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

numbers.remove(10)

print(numbers)

#output

#array('i', [20, 30])

With remove(), only the first instance of the value you pass as an argument will be removed.

See what happens when there are more than one identical values:


import array as arr 

#original array
numbers = arr.array('i',[10,20,30,10,20])

numbers.remove(10)

print(numbers)

#output

#array('i', [20, 30, 10, 20])

Only the first occurence of 10 is removed.

You can also use the pop() method, and specify the position of the element to be removed:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30,10,20])

#remove the first instance of 10
numbers.pop(0)

print(numbers)

#output

#array('i', [20, 30, 10, 20])

Conclusion

And there you have it - you now know the basics of how to create arrays in Python using the array module. Hopefully you found this guide helpful.

You'll start from the basics and learn in an interacitve and beginner-friendly way. You'll also build five projects at the end to put into practice and help reinforce what you learned.

Thanks for reading and happy coding!

Original article source at https://www.freecodecamp.org

#python 

How to Create Arrays in Python

In this tutorial, you'll know the basics of how to create arrays in Python using the array module. Learn how to use Python arrays. You'll see how to define them and the different methods commonly used for performing operations on them.

This tutorialvideo on 'Arrays in Python' will help you establish a strong hold on all the fundamentals in python programming language. Below are the topics covered in this video:  
1:15 What is an array?
2:53 Is python list same as an array?
3:48  How to create arrays in python?
7:19 Accessing array elements
9:59 Basic array operations
        - 10:33  Finding the length of an array
        - 11:44  Adding Elements
        - 15:06  Removing elements
        - 18:32  Array concatenation
       - 20:59  Slicing
       - 23:26  Looping  


Python Array Tutorial – Define, Index, Methods

In this article, you'll learn how to use Python arrays. You'll see how to define them and the different methods commonly used for performing operations on them.

The artcile covers arrays that you create by importing the array module. We won't cover NumPy arrays here.

Table of Contents

  1. Introduction to Arrays
    1. The differences between Lists and Arrays
    2. When to use arrays
  2. How to use arrays
    1. Define arrays
    2. Find the length of arrays
    3. Array indexing
    4. Search through arrays
    5. Loop through arrays
    6. Slice an array
  3. Array methods for performing operations
    1. Change an existing value
    2. Add a new value
    3. Remove a value
  4. Conclusion

Let's get started!

What are Python Arrays?

Arrays are a fundamental data structure, and an important part of most programming languages. In Python, they are containers which are able to store more than one item at the same time.

Specifically, they are an ordered collection of elements with every value being of the same data type. That is the most important thing to remember about Python arrays - the fact that they can only hold a sequence of multiple items that are of the same type.

What's the Difference between Python Lists and Python Arrays?

Lists are one of the most common data structures in Python, and a core part of the language.

Lists and arrays behave similarly.

Just like arrays, lists are an ordered sequence of elements.

They are also mutable and not fixed in size, which means they can grow and shrink throughout the life of the program. Items can be added and removed, making them very flexible to work with.

However, lists and arrays are not the same thing.

Lists store items that are of various data types. This means that a list can contain integers, floating point numbers, strings, or any other Python data type, at the same time. That is not the case with arrays.

As mentioned in the section above, arrays store only items that are of the same single data type. There are arrays that contain only integers, or only floating point numbers, or only any other Python data type you want to use.

When to Use Python Arrays

Lists are built into the Python programming language, whereas arrays aren't. Arrays are not a built-in data structure, and therefore need to be imported via the array module in order to be used.

Arrays of the array module are a thin wrapper over C arrays, and are useful when you want to work with homogeneous data.

They are also more compact and take up less memory and space which makes them more size efficient compared to lists.

If you want to perform mathematical calculations, then you should use NumPy arrays by importing the NumPy package. Besides that, you should just use Python arrays when you really need to, as lists work in a similar way and are more flexible to work with.

How to Use Arrays in Python

In order to create Python arrays, you'll first have to import the array module which contains all the necassary functions.

There are three ways you can import the array module:

  • By using import array at the top of the file. This includes the module array. You would then go on to create an array using array.array().
import array

#how you would create an array
array.array()
  • Instead of having to type array.array() all the time, you could use import array as arr at the top of the file, instead of import array alone. You would then create an array by typing arr.array(). The arr acts as an alias name, with the array constructor then immediately following it.
import array as arr

#how you would create an array
arr.array()
  • Lastly, you could also use from array import *, with * importing all the functionalities available. You would then create an array by writing the array() constructor alone.
from array import *

#how you would create an array
array()

How to Define Arrays in Python

Once you've imported the array module, you can then go on to define a Python array.

The general syntax for creating an array looks like this:

variable_name = array(typecode,[elements])

Let's break it down:

  • variable_name would be the name of the array.
  • The typecode specifies what kind of elements would be stored in the array. Whether it would be an array of integers, an array of floats or an array of any other Python data type. Remember that all elements should be of the same data type.
  • Inside square brackets you mention the elements that would be stored in the array, with each element being separated by a comma. You can also create an empty array by just writing variable_name = array(typecode) alone, without any elements.

Below is a typecode table, with the different typecodes that can be used with the different data types when defining Python arrays:

TYPECODEC TYPEPYTHON TYPESIZE
'b'signed charint1
'B'unsigned charint1
'u'wchar_tUnicode character2
'h'signed shortint2
'H'unsigned shortint2
'i'signed intint2
'I'unsigned intint2
'l'signed longint4
'L'unsigned longint4
'q'signed long longint8
'Q'unsigned long longint8
'f'floatfloat4
'd'doublefloat8

Tying everything together, here is an example of how you would define an array in Python:

import array as arr 

numbers = arr.array('i',[10,20,30])


print(numbers)

#output

#array('i', [10, 20, 30])

Let's break it down:

  • First we included the array module, in this case with import array as arr .
  • Then, we created a numbers array.
  • We used arr.array() because of import array as arr .
  • Inside the array() constructor, we first included i, for signed integer. Signed integer means that the array can include positive and negative values. Unsigned integer, with H for example, would mean that no negative values are allowed.
  • Lastly, we included the values to be stored in the array in square brackets.

Keep in mind that if you tried to include values that were not of i typecode, meaning they were not integer values, you would get an error:

import array as arr 

numbers = arr.array('i',[10.0,20,30])


print(numbers)

#output

#Traceback (most recent call last):
# File "/Users/dionysialemonaki/python_articles/demo.py", line 14, in <module>
#   numbers = arr.array('i',[10.0,20,30])
#TypeError: 'float' object cannot be interpreted as an integer

In the example above, I tried to include a floating point number in the array. I got an error because this is meant to be an integer array only.

Another way to create an array is the following:

from array import *

#an array of floating point values
numbers = array('d',[10.0,20.0,30.0])

print(numbers)

#output

#array('d', [10.0, 20.0, 30.0])

The example above imported the array module via from array import * and created an array numbers of float data type. This means that it holds only floating point numbers, which is specified with the 'd' typecode.

How to Find the Length of an Array in Python

To find out the exact number of elements contained in an array, use the built-in len() method.

It will return the integer number that is equal to the total number of elements in the array you specify.

import array as arr 

numbers = arr.array('i',[10,20,30])


print(len(numbers))

#output
# 3

In the example above, the array contained three elements – 10, 20, 30 – so the length of numbers is 3.

Array Indexing and How to Access Individual Items in an Array in Python

Each item in an array has a specific address. Individual items are accessed by referencing their index number.

Indexing in Python, and in all programming languages and computing in general, starts at 0. It is important to remember that counting starts at 0 and not at 1.

To access an element, you first write the name of the array followed by square brackets. Inside the square brackets you include the item's index number.

The general syntax would look something like this:

array_name[index_value_of_item]

Here is how you would access each individual element in an array:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers[0]) # gets the 1st element
print(numbers[1]) # gets the 2nd element
print(numbers[2]) # gets the 3rd element

#output

#10
#20
#30

Remember that the index value of the last element of an array is always one less than the length of the array. Where n is the length of the array, n - 1 will be the index value of the last item.

Note that you can also access each individual element using negative indexing.

With negative indexing, the last element would have an index of -1, the second to last element would have an index of -2, and so on.

Here is how you would get each item in an array using that method:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers[-1]) #gets last item
print(numbers[-2]) #gets second to last item
print(numbers[-3]) #gets first item
 
#output

#30
#20
#10

How to Search Through an Array in Python

You can find out an element's index number by using the index() method.

You pass the value of the element being searched as the argument to the method, and the element's index number is returned.

import array as arr 

numbers = arr.array('i',[10,20,30])

#search for the index of the value 10
print(numbers.index(10))

#output

#0

If there is more than one element with the same value, the index of the first instance of the value will be returned:

import array as arr 


numbers = arr.array('i',[10,20,30,10,20,30])

#search for the index of the value 10
#will return the index number of the first instance of the value 10
print(numbers.index(10))

#output

#0

How to Loop through an Array in Python

You've seen how to access each individual element in an array and print it out on its own.

You've also seen how to print the array, using the print() method. That method gives the following result:

import array as arr 

numbers = arr.array('i',[10,20,30])

print(numbers)

#output

#array('i', [10, 20, 30])

What if you want to print each value one by one?

This is where a loop comes in handy. You can loop through the array and print out each value, one-by-one, with each loop iteration.

For this you can use a simple for loop:

import array as arr 

numbers = arr.array('i',[10,20,30])

for number in numbers:
    print(number)
    
#output
#10
#20
#30

You could also use the range() function, and pass the len() method as its parameter. This would give the same result as above:

import array as arr  

values = arr.array('i',[10,20,30])

#prints each individual value in the array
for value in range(len(values)):
    print(values[value])

#output

#10
#20
#30

How to Slice an Array in Python

To access a specific range of values inside the array, use the slicing operator, which is a colon :.

When using the slicing operator and you only include one value, the counting starts from 0 by default. It gets the first item, and goes up to but not including the index number you specify.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#get the values 10 and 20 only
print(numbers[:2])  #first to second position

#output

#array('i', [10, 20])

When you pass two numbers as arguments, you specify a range of numbers. In this case, the counting starts at the position of the first number in the range, and up to but not including the second one:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])


#get the values 20 and 30 only
print(numbers[1:3]) #second to third position

#output

#rray('i', [20, 30])

Methods For Performing Operations on Arrays in Python

Arrays are mutable, which means they are changeable. You can change the value of the different items, add new ones, or remove any you don't want in your program anymore.

Let's see some of the most commonly used methods which are used for performing operations on arrays.

How to Change the Value of an Item in an Array

You can change the value of a specific element by speficying its position and assigning it a new value:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#change the first element
#change it from having a value of 10 to having a value of 40
numbers[0] = 40

print(numbers)

#output

#array('i', [40, 20, 30])

How to Add a New Value to an Array

To add one single value at the end of an array, use the append() method:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 to the end of numbers
numbers.append(40)

print(numbers)

#output

#array('i', [10, 20, 30, 40])

Be aware that the new item you add needs to be the same data type as the rest of the items in the array.

Look what happens when I try to add a float to an array of integers:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 to the end of numbers
numbers.append(40.0)

print(numbers)

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 19, in <module>
#   numbers.append(40.0)
#TypeError: 'float' object cannot be interpreted as an integer

But what if you want to add more than one value to the end an array?

Use the extend() method, which takes an iterable (such as a list of items) as an argument. Again, make sure that the new items are all the same data type.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integers 40,50,60 to the end of numbers
#The numbers need to be enclosed in square brackets

numbers.extend([40,50,60])

print(numbers)

#output

#array('i', [10, 20, 30, 40, 50, 60])

And what if you don't want to add an item to the end of an array? Use the insert() method, to add an item at a specific position.

The insert() function takes two arguments: the index number of the position the new element will be inserted, and the value of the new element.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

#add the integer 40 in the first position
#remember indexing starts at 0

numbers.insert(0,40)

print(numbers)

#output

#array('i', [40, 10, 20, 30])

How to Remove a Value from an Array

To remove an element from an array, use the remove() method and include the value as an argument to the method.

import array as arr 

#original array
numbers = arr.array('i',[10,20,30])

numbers.remove(10)

print(numbers)

#output

#array('i', [20, 30])

With remove(), only the first instance of the value you pass as an argument will be removed.

See what happens when there are more than one identical values:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30,10,20])

numbers.remove(10)

print(numbers)

#output

#array('i', [20, 30, 10, 20])

Only the first occurence of 10 is removed.

You can also use the pop() method, and specify the position of the element to be removed:

import array as arr 

#original array
numbers = arr.array('i',[10,20,30,10,20])

#remove the first instance of 10
numbers.pop(0)

print(numbers)

#output

#array('i', [20, 30, 10, 20])

Conclusion

And there you have it - you now know the basics of how to create arrays in Python using the array module. Hopefully you found this guide helpful.

Thanks for reading and happy coding!

#python #programming 

Lokesh Kumar

1603438098

Top 10 Trending Technologies Must Learn in 2021 | igmGuru

Technology has taken a place of more productiveness and give the best to the world. In the current situation, everything is done through the technical process, you don’t have to bother about doing task, everything will be done automatically.This is an article which has some important technologies which are new in the market are explained according to the career preferences. So let’s have a look into the top trending technologies followed in 2021 and its impression in the coming future in the world.

  1. Data Science
    First in the list of newest technologies is surprisingly Data Science. Data Science is the automation that helps to be reasonable for complicated data. The data is produces in a very large amount every day by several companies which comprise sales data, customer profile information, server data, business data, and financial structures. Almost all of the data which is in the form of big data is very indeterminate. The character of a data scientist is to convert the indeterminate datasets into determinate datasets. Then these structured data will examine to recognize trends and patterns. These trends and patterns are beneficial to understand the company’s business performance, customer retention, and how they can be enhanced.

  2. DevOps
    Next one is DevOps, This technology is a mixture of two different things and they are development (Dev) and operations (Ops). This process and technology provide value to their customers in a continuous manner. This technology plays an important role in different aspects and they can be- IT operations, development, security, quality, and engineering to synchronize and cooperate to develop the best and more definitive products. By embracing a culture of DevOps with creative tools and techniques, because through that company will gain the capacity to preferable comeback to consumer requirement, expand the confidence in the request they construct, and accomplish business goals faster. This makes DevOps come into the top 10 trending technologies.

  3. Machine learning
    Next one is Machine learning which is constantly established in all the categories of companies or industries, generating a high command for skilled professionals. The machine learning retailing business is looking forward to enlarging to $8.81 billion by 2022. Machine learning practices is basically use for data mining, data analytics, and pattern recognition. In today’s scenario, Machine learning has its own reputed place in the industry. This makes machine learning come into the top 10 trending technologies. Get the best machine learning course and make yourself future-ready.

To want to know more click on Top 10 Trending Technologies in 2021

You may also read more blogs mentioned below

How to Become a Salesforce Developer

Python VS R Programming

The Scope of Hadoop and Big Data in 2021

#top trending technologies #top 10 trending technologies #top 10 trending technologies in 2021 #top trending technologies in 2021 #top 5 trending technologies in 2021 #top 5 trending technologies