1626817320

In this episode of daily DBA, I pick up 5 important DBA related questions and give my answers! Do not forget to checkout BONUS QUESTION at the end of the video!

01:21 How to open database when archive log is missing?

07:06 Could you also explain about high water mark please?

17:33 #dba Challenge!

19:48 Why we need to rebuild the indexes?

24:39 #dba Challenge!

25:07 When you issue SELECT * FROM EMP; does it use Indexes on the table?

25:39 What is the difference between data file header and data block header? What it contains?

26:41 #dba Challenge!

Bonus Question

27:15 Why can’t we give DBA access to developer team?

#dailyDBA #oracle #cloudDBA #dbaGenesis #dbaChallenge

Your comments encourage us to produce quality content, please take a second and say ‘Hi’ in the comments and let me and my team know what you thought of the video … p.s. It would mean the world to me if you hit the subscribe button ;)

Link to full course: https://dbagenesis.com/p/oracle-virtualbox-administration

Link to all DBA courses: https://dbagenesis.com/courses

Link to real-time projects: https://dbagenesis.com/p/projects

Link to support articles: https://support.dbagenesis.com

DBA Genesis provides all you need to build and manage effective Oracle technology learning. We designed DBA Genesis as a simple to use yet powerful online Oracle learning system for students. Each of our courses is taught by an expert instructor, and every course is available with a challenging project to push you out of your comfort zone!!

DBA Genesis is currently the fastest & the most engaging learning platforms for DBAs across the globe. Take your database administration skills to next level by enrolling into your first course.

Start your DBA Journey Today !!

#rebuild indexes

1677864120

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")`

.

`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.

`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.

`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.

`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.

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.

```
#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 dataThat 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 meanCan 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 midvarianceA robust estimator of scale (dispersion). See NIST ITL webpage for more.

```
julia> pbvar(x)
2.0009575278957623
```

`bivar`

: biweight midvarianceA robust estimator of scale (dispersion). See NIST ITL webpage for more.

```
julia> bivar(x)
1.5885279811329132
```

`tauloc`

, `tauvar`

: tau measure of location and scaleRobust 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 detectionUse 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 medianReturn 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 intervalCompute 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
```

See `UNMAINTAINED.md`

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

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

Author: Mrxiaohe

Source Code: https://github.com/mrxiaohe/RobustStats.jl

License: MIT license

1666082925

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.

- Introduction to Arrays
- The differences between Lists and Arrays
- When to use arrays

- How to use arrays
- Define arrays
- Find the length of arrays
- Array indexing
- Search through arrays
- Loop through arrays
- Slice an array

- Array methods for performing operations
- Change an existing value
- Add a new value
- Remove a value

- Conclusion

Let's get started!

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.

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.

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.

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()
```

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:

TYPECODE | C TYPE | PYTHON TYPE | SIZE |
---|---|---|---|

'b' | signed char | int | 1 |

'B' | unsigned char | int | 1 |

'u' | wchar_t | Unicode character | 2 |

'h' | signed short | int | 2 |

'H' | unsigned short | int | 2 |

'i' | signed int | int | 2 |

'I' | unsigned int | int | 2 |

'l' | signed long | int | 4 |

'L' | unsigned long | int | 4 |

'q' | signed long long | int | 8 |

'Q' | unsigned long long | int | 8 |

'f' | float | float | 4 |

'd' | double | float | 8 |

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.

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`

.

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
```

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
```

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
```

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])
```

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.

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])
```

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])
```

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])
```

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

1670560264

## 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.

- Introduction to Arrays
- The differences between Lists and Arrays
- When to use arrays

- How to use arrays
- Define arrays
- Find the length of arrays
- Array indexing
- Search through arrays
- Loop through arrays
- Slice an array

- Array methods for performing operations
- Change an existing value
- Add a new value
- Remove a value

- Conclusion

Let's get started!

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.

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.

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.

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()
```

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:

TYPECODE | C TYPE | PYTHON TYPE | SIZE |
---|---|---|---|

'b' | signed char | int | 1 |

'B' | unsigned char | int | 1 |

'u' | wchar_t | Unicode character | 2 |

'h' | signed short | int | 2 |

'H' | unsigned short | int | 2 |

'i' | signed int | int | 2 |

'I' | unsigned int | int | 2 |

'l' | signed long | int | 4 |

'L' | unsigned long | int | 4 |

'q' | signed long long | int | 8 |

'Q' | unsigned long long | int | 8 |

'f' | float | float | 4 |

'd' | double | float | 8 |

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.

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`

.

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
```

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
```

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
```

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])
```

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.

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])
```

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])
```

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])
```

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 athttps://www.freecodecamp.org

#python

1626817320

In this episode of daily DBA, I pick up 5 important DBA related questions and give my answers! Do not forget to checkout BONUS QUESTION at the end of the video!

01:21 How to open database when archive log is missing?

07:06 Could you also explain about high water mark please?

17:33 #dba Challenge!

19:48 Why we need to rebuild the indexes?

24:39 #dba Challenge!

25:07 When you issue SELECT * FROM EMP; does it use Indexes on the table?

25:39 What is the difference between data file header and data block header? What it contains?

26:41 #dba Challenge!

Bonus Question

27:15 Why can’t we give DBA access to developer team?

#dailyDBA #oracle #cloudDBA #dbaGenesis #dbaChallenge

Your comments encourage us to produce quality content, please take a second and say ‘Hi’ in the comments and let me and my team know what you thought of the video … p.s. It would mean the world to me if you hit the subscribe button ;)

Link to full course: https://dbagenesis.com/p/oracle-virtualbox-administration

Link to all DBA courses: https://dbagenesis.com/courses

Link to real-time projects: https://dbagenesis.com/p/projects

Link to support articles: https://support.dbagenesis.com

DBA Genesis provides all you need to build and manage effective Oracle technology learning. We designed DBA Genesis as a simple to use yet powerful online Oracle learning system for students. Each of our courses is taught by an expert instructor, and every course is available with a challenging project to push you out of your comfort zone!!

DBA Genesis is currently the fastest & the most engaging learning platforms for DBAs across the globe. Take your database administration skills to next level by enrolling into your first course.

Start your DBA Journey Today !!

#rebuild indexes

1619571780

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:

**Web Development****Data Science****Machine Learning****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