Home Backend Development Python Tutorial Detailed explanation of the operation of arrays by Python Numpy library

Detailed explanation of the operation of arrays by Python Numpy library

Aug 30, 2019 pm 05:29 PM
numpy library python array

Detailed explanation of the operation of arrays by Python Numpy library

1. Introduction

NumPy (Numerical Python) is an extension library for the Python language that supports a large number of Dimensional array and matrix operations, in addition to providing a large number of mathematical function libraries for array operations. The main data structure is the ndarray array.

NumPy is often used together with SciPy (Scientific Python) and Matplotlib (plotting library), a combination widely used as a replacement for MatLab.

SciPy is an open source Python algorithm library and mathematical toolkit. SciPy includes modules for optimization, linear algebra, integration, interpolation, special functions, fast Fourier transform, signal processing and image processing, solving ordinary differential equations, and other calculations commonly used in science and engineering.

Matplotlib is a visual operating interface for the Python programming language and its numerical mathematics extension package NumPy.

2. Create

Create one-dimensional array

(1) Create directly: np.array([1, 2, 3, 4, 5, 6])

(2) Create from python list: np.array(list([1, 2, 3, 4, 5, 6]))

Create constants One-dimensional data of value

(1) Create a constant value with 0: np.zeros(n,dytpe=float/int)

(2) Create a constant value with 1 Value: np.ones(n)

(3) Create an empty array: np.empty(4)

Create an array with increasing elements

( 1) Incremental array starting from 0: np.arange(8)

(2) Given interval, custom step size: np.arange(0,1,0.2)

(3) Given an interval, customize the number: np.linspace(-1,1,50)

Create a multi-dimensional array: Create a single-dimensional array and then add it to the multi-dimensional array

# 数组的结构一定是np.array([]) 无论数组中间存放的是多少“层”数据
# 二维数组相当于存放的是“两层”数组而已
arr1=np.array(list([1, 2, 3, 4, 5]))
arr2=np.array([arr1,[1,0,0,1,0]])               # 2*5的两维数组
arr3=np.array(list([[0,0,1,1,1],[1,1,1,0,0],[2,3,4,5,6]]))    # 3*5的两维数组
arrx=np.array([arr1,list([1, 2, 3, 4, 5],[1,1,1,0,0])])     # 报错
arry=np.array([list([[ 1,2,3,  7, 11],[2,3,4,5,6]]),[1, 2, 3, 4, 5]]) # 报错
Copy after login

Related recommendations: "Python Video Tutorial"

Create (n*m)-dimensional data with constant values

(1) Create a constant value of 0: np.zeros((n*m),dytpe=float/int)

(2) Create a constant value with 1: np.ones((n*m))

(3 )Create an empty array: np.empty((n*m))

Create an array of random numbers

Generate a random number seed:

(1) np.random.seed()

(2) np.random.RandomState()

Generate random numbers:

Detailed explanation of the operation of arrays by Python Numpy library

Generates yes Random array with regular distribution

(1) Binomial distribution: np.random.binomial(n, p, size)

(2) Normal distribution: np.random.normal(loc , scale, size)

Convert csv files into arrays or arrays

Use np.genfromtxt('csv file name', delimiter = 'delimiter in the file') function Convert the file into an array

 csv_array = np.genfromtxt('sample.csv', delimiter=',')
 print(csv_array)
Copy after login

3. Transformation of the array

Generates the function of array/matrix transposition, that is, the exchange of row and column numbers, use .T

a = np.array([[32, 15, 6, 9, 14], 
              [12, 10, 5, 23, 1],
              [2, 16, 13, 40, 37]])
print(a.T)
-------------------
# 结果如下
[[32 12  2]
 [15 10 16]
 [ 6  5 13]
 [ 9 23 40]
 [14  1 37]]
Copy after login

Change the shape of the array:

(1) arr.resize(n,m): The arr.resize(n,m) function modifies the array in place, requiring: the number of elements must be consistent

a=np.arange(8)
a.resize(2,4)
print(a)
---------------------------
[[0 1 2 3]
 [4 5 6 7]]
Copy after login

(2) arr.reshape(n,m): If the parameter of a certain dimension is -1, it means that the total number of elements will be calculated based on the other dimension.

a=np.arange(8).reshape(-1,1)
print(a)
-----------------
[[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]]
Copy after login

Will one Raising the dimension to two dimensions: np.newaxis

np.newaxis actually means directly increasing the dimension. We generally do not add too many dimensions to the array. Here is an example of increasing one dimension to two dimensions:

(1) Increase the row dimension: arr[np.newaxis, :]

(2) Increase the column dimension: arr[:, np.newaxis]

a=np.arange(8)
a             # array([0, 1, 2, 3, 4, 5, 6, 7])
a.shape           # (8,)
a[np.newaxis, :]      # array([[0, 1, 2, 3, 4, 5, 6, 7]])
a.shape           # (8,)
a[: , np.newaxis]     # array([[0],[1],[2],[3],[4],[5],[6],[7]])
a.shape           # (8,)
Copy after login

Dimensionality reduction : arr.ravel()

arr.ravel() function when reducing dimensions: the default is to generate a new array in row order (that is, read line by line); if the parameter "F" is passed in, the column order is reduced Dimensions generate new array

a=np.array([[1,2],[3,4]])
a.ravel()       
a.ravel('F')      
----------------------------
# 结果 array([1, 2, 3, 4])
# 结果 array([1, 3, 2, 4])
Copy after login

4. Calculation

Perform calculation operations on arrays

(1) Add and subtract elements

a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(2,4))   # array([[1, 2, 5, 3], [4, 1, 0, 6]])
a+b
a-b
----------------------------
# a+b和a-b结果分别是:
array([[ 1,  3,  7,  6],
       [ 8,  6,  6, 13]])
array([[-1, -1, -3,  0],
       [ 0,  4,  6,  1]])
Copy after login

(2) Multiplication: square/multiply the elements in the matrix

a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(2,4))   # array([[1, 2, 5, 3], [4, 1, 0, 6]])
a**2
a*b
-----------------------
# a矩阵平方/a*b矩阵中元素相乘结果分别:
array([[ 0,  1,  4,  9],
       [16, 25, 36, 49]])
array([[ 0,  2, 10,  9],
       [16,  5,  0, 42]])
Copy after login

(3) Matrix*matrix:

# 要求a矩阵的行要等于b矩阵的列数;且a矩阵的列等于b矩阵的行数
a=np.arange(8).reshape(2,4)       # array([[0, 1, 2, 3], [4, 5, 6, 7]])
b=np.random.randint(8,size=(4,2))   # array([[3, 0],[3, 3],[5, 6],[6, 7]])
c1 = np.dot(a,b)
c2 = a.dot(b)
----------------------
# ab矩阵相乘的结果:c1=c2 
array([[ 31,  36],
     [ 99, 100]])
Copy after login

(4) Logical calculation

[Note] The list cannot be used as a whole to make logical judgments on the individual elements in it!

# 结果返回:一个数组,其中每个元素根据逻辑判断的布尔类型的结果
a > 3 
-----------------------------
# 结果如下:
array([[False, False, False, False],
     [ True,  True,  True,  True]])
Copy after login

5. Value

Get an element in a one-dimensional array: The operation is the same as the index of the list list

a = np.array([5, 2, 7, 0, 11])
a[0]      # 结果为 5
a[:4]     # 结果为 从头开始到索引为4结束
a[2:]     # 结果为 从索引为2的开始到结尾
a[::2]      # 结果为 从头开始到结尾,每2个取一个值
Copy after login

Get a multi-dimensional array An element, a row or a column value

a = np.array([[32, 15, 6, 9, 14], 
         [12, 10, 5, 23, 1],
         [2, 16, 13, 40, 37]])
a[2,1]     # 结果是一个元素 16
a[2][1]    # 结果是一个元素 16
a[1]      # 第2行 array([12, 10,  5, 23,  1])
a[:,2]   # 取出全部行,第2列 [15,10,16]
a[1:3, :]   # 取出[1,3)行,全部列
a[1,1:]    # array([10,  5, 23,  1])
Copy after login

Get the

# 需要注意的是,我们数据进行逻辑计算操作得到的仍然是一个数组
# 如果我们想要的是一个过滤后的数组,就需要将"逻辑判断"传入数组中
a = np.array([[32, 15, 6, 9, 14], 
              [12, 10, 5, 23, 1],
              [2, 16, 13, 40, 37]])
a[a > 3]
a[(a > 3) | (a < 2)]  
------------------------------
# 结果分别是:
array([32, 15,  6,  9, 14, 12, 10,  5, 23, 16, 13, 40, 37])
array([32, 15,  6,  9, 14, 12, 10,  5, 23,  1, 16, 13, 40, 37])
Copy after login

that satisfies the logical operation Traversal: the result is output in rows

a = np.array([[32, 15, 6, 9, 14], 
         [12, 10, 5, 23, 1],
         [2, 16, 13, 40, 37]])
for x in a:
    print(x)
--------------------
[32 15  6  9 14]
[12 10  5 23  1]
[ 2 16 13 40 37]
Copy after login

6. Copy/ Split/Merge

Copy: arr.cope()

Split:

(1) Equal parts: np.split(arr, n, axis=0 /1) (That is, only when the number of rows or columns can be divided evenly by n)

(2) Unequal division: np.array_split(arr, n) Default is divided into n parts by row

a = np.array([[32, 15, 6, 9, 14, 21], 
         [12, 10, 5, 23, 1, 10],
         [2, 16, 13, 40, 37, 8]])
              
# 可以看到a矩阵是(3*6),所以使用np.split()只能尝试行分成3份;或者列分成2/3/6份 
np.split(a,3,axis=0)  
np.split(a,3,axis=1)
np.array_split(a,2)
np.array_split(a,4,axis=1)
-------------------------------------------
[array([[32, 15,  6,  9, 14, 21]]),
 array([[12, 10,  5, 23,  1, 10]]),
 array([[ 2, 16, 13, 40, 37,  8]])]
   
[array([[32, 15],
        [12, 10],
        [ 2, 16]]), array([[ 6,  9],
        [ 5, 23],
        [13, 40]]), array([[14, 21],
        [ 1, 10],
        [37,  8]])]
        
[array([[32, 15,  6,  9, 14, 21],
        [12, 10,  5, 23,  1, 10]]), array([[ 2, 16, 13, 40, 37,  8]])]
        
[array([[32, 15],
        [12, 10],
        [ 2, 16]]), array([[ 6,  9],
        [ 5, 23],
        [13, 40]]), array([[14],
        [ 1],
        [37]]), array([[21],
        [10],
        [ 8]])]
Copy after login


Merge: np.concatenate((arr1, arr2, arr3), axis=0/1) Default is connected to the data

a=np.random.rand(2,3)
b=np.random.randint(1,size=(2,3))
np.concatenate((a,b,a))         # 接在下面
np.concatenate((a,b,a),axis=1)      # 接在后面
------------------------
array([[0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439],
       [0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        ],
       [0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439]])
array([[0.95912866, 0.81396527, 0.809493  , 0.        , 0.        ,
        0.        , 0.95912866, 0.81396527, 0.809493  ],
       [0.4539276 , 0.24173315, 0.63931439, 0.        , 0.        ,
        0.        , 0.4539276 , 0.24173315, 0.63931439]])
Copy after login

The above is the detailed content of Detailed explanation of the operation of arrays by Python Numpy library. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

Python vs. JavaScript: Community, Libraries, and Resources Python vs. JavaScript: Community, Libraries, and Resources Apr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

Detailed explanation of docker principle Detailed explanation of docker principle Apr 14, 2025 pm 11:57 PM

Docker uses Linux kernel features to provide an efficient and isolated application running environment. Its working principle is as follows: 1. The mirror is used as a read-only template, which contains everything you need to run the application; 2. The Union File System (UnionFS) stacks multiple file systems, only storing the differences, saving space and speeding up; 3. The daemon manages the mirrors and containers, and the client uses them for interaction; 4. Namespaces and cgroups implement container isolation and resource limitations; 5. Multiple network modes support container interconnection. Only by understanding these core concepts can you better utilize Docker.

How to run programs in terminal vscode How to run programs in terminal vscode Apr 15, 2025 pm 06:42 PM

In VS Code, you can run the program in the terminal through the following steps: Prepare the code and open the integrated terminal to ensure that the code directory is consistent with the terminal working directory. Select the run command according to the programming language (such as Python's python your_file_name.py) to check whether it runs successfully and resolve errors. Use the debugger to improve debugging efficiency.

Python: Automation, Scripting, and Task Management Python: Automation, Scripting, and Task Management Apr 16, 2025 am 12:14 AM

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

Is the vscode extension malicious? Is the vscode extension malicious? Apr 15, 2025 pm 07:57 PM

VS Code extensions pose malicious risks, such as hiding malicious code, exploiting vulnerabilities, and masturbating as legitimate extensions. Methods to identify malicious extensions include: checking publishers, reading comments, checking code, and installing with caution. Security measures also include: security awareness, good habits, regular updates and antivirus software.

How to install nginx in centos How to install nginx in centos Apr 14, 2025 pm 08:06 PM

CentOS Installing Nginx requires following the following steps: Installing dependencies such as development tools, pcre-devel, and openssl-devel. Download the Nginx source code package, unzip it and compile and install it, and specify the installation path as /usr/local/nginx. Create Nginx users and user groups and set permissions. Modify the configuration file nginx.conf, and configure the listening port and domain name/IP address. Start the Nginx service. Common errors need to be paid attention to, such as dependency issues, port conflicts, and configuration file errors. Performance optimization needs to be adjusted according to the specific situation, such as turning on cache and adjusting the number of worker processes.

What is vscode What is vscode for? What is vscode What is vscode for? Apr 15, 2025 pm 06:45 PM

VS Code is the full name Visual Studio Code, which is a free and open source cross-platform code editor and development environment developed by Microsoft. It supports a wide range of programming languages ​​and provides syntax highlighting, code automatic completion, code snippets and smart prompts to improve development efficiency. Through a rich extension ecosystem, users can add extensions to specific needs and languages, such as debuggers, code formatting tools, and Git integrations. VS Code also includes an intuitive debugger that helps quickly find and resolve bugs in your code.

See all articles