当前位置:网站首页>Numpy --- basic learning notes
Numpy --- basic learning notes
2022-07-07 15:50:00 【madkeyboard】
Numpy and List
List The functions that can be done are roughly the same as Numpy It's almost the same , however Numpy The advantage of is that the operation is very fast , because Numpy In storage, a piece of continuous physical address of the computer is used to store data , It takes less time to search data , and List The stored data is scattered in different physical spaces .
So when dealing with large-scale data ,Numpy than List The effect is good .
An example is given to demonstrate the time they spend processing data separately , As you can see from the results , Let a random input increase 10000 Time ,Numpy The calculation speed of is about 10 times , If there's more data , The effect should be better .
import time
import numpy as np
t0 = time.time()
# python list
l = list(range(100))
for _ in range(10000):
for i in range(len(l)):
l[i] += 1
t1 = time.time()
# numpy array
a = np.array(l)
for _ in range(10000):
a += 1
print("Python list spend {:.3f}s".format(t1-t0))
print("Numpy array spend {:.3f}s".format(time.time()-t1))
dimension
Numpy One of its advantages is that it can handle multidimensional data , In machine learning and artificial intelligence, the calculation of multidimensional data often occurs .
Create multidimensional data
For example, it takes time for us to test a car to accelerate for hundreds of miles , First create a list of hundred mile accelerations
car = np.array([5,12,3,13])
print(" Time consuming : ",car,"\n dimension :",car.ndim)
You can see that the output is one-dimensional , Then if you add several groups of data, it means multiple tests , You create two-dimensional data
car = np.array(
[[5,12,3,13],
[5.2,11,14,5],
[6.1,6.6,4.3,6.5]])
print(" Time consuming : ",car,"\n dimension :",car.ndim)
Empathy , Create a three-dimensional representation to test the vehicle on different sites .
car = np.array([
[
[5, 10, 12, 6],
[5.1, 8.2, 11, 6.3],
[4.4, 9.1, 10, 6.6]
],
[
[6, 11, 13, 7],
[6.1, 9.2, 12, 7.3],
[5.4, 10.1, 11, 7.6]
],
])
print(" The total dimension :", car.ndim)
print(" site 1 data :\n", car[0], "\n site 1 dimension :", car[0].ndim)
print(" site 2 data :\n", car[1], "\n site 2 dimension :", car[1].ndim)
Add data
Add one-dimensional data .np.concatenate()
cars1 = np.array([5, 10, 12, 6])
cars2 = np.array([5.2, 4.2])
cars = np.concatenate([cars1, cars2])
print(cars) #[ 5. 10. 12. 6. 5.2 4.2]
Add 2D data
test1 = np.array([5, 10, 12, 6])
test2 = np.array([5.1, 8.2, 11, 6.3])
# First, we need to turn them into two dimensions , The following two methods can add dimensions
test1 = np.expand_dims(test1, 0)
test2 = test2[np.newaxis, :]
print("test1 After adding dimensions ", test1)
print("test2 After adding dimensions ", test2)
# Then superimpose on the first dimension
all_tests = np.concatenate([test1, test2])
print(" After the exhibition \n", all_tests)
Merge data
As long as the dimensions can be aligned , You can merge on any dimension .
import time
import numpy as np
test1 = np.array([5, 10, 12, 6])
test2 = np.array([5.1, 8.2, 11, 6.3])
# First, we need to turn them into two dimensions , The following two methods can add dimensions
test1 = np.expand_dims(test1, 0)
test2 = test2[np.newaxis, :]
all_tests = np.concatenate([test1, test2])
print(" The first dimension is superimposed :\n",np.concatenate([all_tests,all_tests],axis=0))
print(" The second dimension is superimposed :\n",np.concatenate([all_tests,all_tests],axis=1))
np.hstack() Horizontal merger
np.vstach() Vertical merge
- Observation form
test1 = np.array([
[5, 10, 12, 6],
[5.1, 8.2, 11, 6.3],
[4.4, 9.1, 10, 6.6]
])
print(" According to the total :",test1.size)
print(" The first dimension ",test1.shape[0]) # Indicates how many tests have been performed
print(" The second dimension ",test1.shape[1]) # Indicates the number of vehicles tested
print(" All dimensions ",test1.shape)
# The first dimension : 3
# The second dimension : 4
# All dimensions : (3, 4)
Data selection
- Single choice
import numpy as np
b = np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
])
print("b[1]:\n",b[1]) # Select all numbers in the second row
print("b[2,1]:\n",b[2,1]) # Select the number of the third row and the second column
print("b[[1,0],[2,3]]:\n",
b[[1,0],
[2,3]]) # The two numbers taken are [1,2] and [0,3]
- section
print("b[1]:\n",b[:2]) # Select all the numbers in the first and second rows
print("b[2,1]:\n",b[:2,:3]) # Select the first and second rows , front 3 Number of columns
- To choice
import numpy as np
b = np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
])
condition = (b < 5) & (b != 2)
print(b[condition]) # 1 3 4
print(np.where(condition,-2,b)) # Replace the value satisfying the condition with -2
print(np.where(condition,-2,-1)) # Replace the value satisfying the condition with -2, If not, replace with -1
Basic operation
import numpy as np
a = np.array([
[1,2],
[3,4]
])
b = np.array([
[5,6],
[7,8]
])
print(a.dot(b)) # Matrix dot product print(np.dot(a, b))
np.max() # Maximum
np.min() # minimum value
np.sum() # Sum up
np.prod() # Multiplicative multiplication
np.size() # total
np.count_nonzero() # Nonzero total
np.mean() # The average
np.median() # Median
np.std() # Standard deviation
np.argmax() # The subscript of the maximum value
np.argmin() # Subscript of minimum value
np.ceil() # Rounding up
np.floor() # Rounding down
np.clip(a,b) # Define a rounded upper 、 Lower bound
a = np.array([150.1, 166.4, 183.7, 170.8])
print("clip:", a.clip(160, 180))
# clip: [160. 166.4 180. 170.8]
# Official documents https://numpy.org/devdocs/user/quickstart.html#basic-operations
Change the data form
Add dimensions
a_2d = a[np.newaxis, :] a_none = a[:, None] a_expand = np.expand_dims(a, axis=1) # These three methods can achieve the same effect
Reduce dimensions
a_squeeze = np.squeeze(a_expand) a_squeeze_axis = a_expand.squeeze(axis=1) # squeeze Only dimensions can be reduced shape Up for 1 Dimensions , Ensure that the data structure does not change # If you want to change the dimension, you can use reshape a = np.array([1,2,3,4,5,6]) a1 = a.reshape([2, 3]) a2 = a.reshape([3,1,2]) # I don't understand here # a1 shape: (2, 3) [[1 2 3] [4 5 6]] a2 shape: (3, 1, 2) [[[1 2]] [[3 4]] [[5 6]]] # # Matrix transposition np.transpose() np.T
Merge
np.column_stack() # columns np.row_stack() # merger # The above two merge methods are similar to vstack and hstack The difference is that : Use vstack and hstack You need to process dimension information first , and column_stack and row_stack Automatic processing feature_a = np.array([1,2,3,4,5,6])[:, None] feature_b = np.array([11,22,33,44,55,66])[:, None] c_stack = np.hstack([feature_a, feature_b]) # np.concatenate() It is suitable for merging in different situations np.concatenate([a, b], axis=0)
Take apart
a = np.array( [[ 1, 11, 2, 22], [ 3, 33, 4, 44], [ 5, 55, 6, 66], [ 7, 77, 8, 88]] ) print(np.vsplit(a, indices_or_sections=2)) # In two parts print(np.vsplit(a, indices_or_sections=[2,3])) # Slice into [:2],[2:3], [3:] np.hsplit() # Crosscut The function is similar to
a = np.array( [[ 1, 11, 2, 22], [ 3, 33, 4, 44], [ 5, 55, 6, 66], [ 7, 77, 8, 88]] ) print(np.split(a, indices_or_sections=2, axis=0)) # In two parts print(np.split(a, indices_or_sections=[2,3], axis=1)) # In the second dimension , Slice into [:2],[2:3],[3:] # Use split Custom segmentation
边栏推荐
- LeetCode3_ Longest substring without duplicate characters
- Async and await
- Getting started with webgl (2)
- 有钱人买房就是不一样
- 保证接口数据安全的10种方案
- Getting started with webgl (3)
- jacoco代码覆盖率
- HW初级流量监控,到底该怎么做
- webgl_ Graphic transformation (rotation, translation, zoom)
- [quick start of Digital IC Verification] 29. Ahb-sramc (9) (ahb-sramc svtb overview) of SystemVerilog project practice
猜你喜欢
L'application à l'échelle de la normalisation mature des produits ai des compagnies maritimes, cimc, leader mondial de l'intelligence artificielle portuaire et maritime / intelligence artificielle des
Three. JS introductory learning notes 10:three JS grid
Gd32 F3 pin mapping problem SW interface cannot be burned
Spin animation of Cocos performance optimization
10 schemes to ensure interface data security
20th anniversary of agile: a failed uprising
Webgl texture
Async and await
【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(APB协议基本要点)
2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码
随机推荐
Three. JS introductory learning notes 07: external model import -c4d to JSON file for web pages -fbx import
[quick start of Digital IC Verification] 29. Ahb-sramc (9) (ahb-sramc svtb overview) of SystemVerilog project practice
The "go to definition" in VS2010 does not respond or prompts the solution of "symbol not found"
2.Golang基础知识
Iterator and for of.. loop
Do not use memset to clear floating-point numbers
[Lanzhou University] information sharing of postgraduate entrance examination and re examination
Nacos一致性协议 CP/AP/JRaft/Distro协议
Use cpolar to build a business website (2)
XMIND frame drawing tool
Spin animation of Cocos performance optimization
Runnable是否可以中断
How to deploy the super signature distribution platform system?
Getting started with webgl (2)
Starting from 1.5, build a microservice framework link tracking traceid
leetcode 241. Different ways to add parentheses design priority for operational expressions (medium)
Three. Introduction to JS learning notes 17: mouse control of 3D model rotation of JSON file
Keil5 does not support online simulation of STM32 F0 series
Learn good-looking custom scroll bars in 1 minute
Three. JS introductory learning notes 04: external model import - no material obj model