当前位置:网站首页>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
边栏推荐
- How to deploy the super signature distribution platform system?
- Cocos uses custom material to display problems
- Mesh merging under ue4/ue5 runtime
- Wechat applet 01
- 一大波开源小抄来袭
- VS2005 strange breakpoint is invalid or member variable value cannot be viewed
- ./ Functions of configure, make and make install
- It's different for rich people to buy a house
- The difference between full-time graduate students and part-time graduate students!
- Three. JS introduction learning notes 12: the model moves along any trajectory line
猜你喜欢
Iterator and for of.. loop
Write sequence frame animation with shader
【花雕体验】15 尝试搭建Beetle ESP32 C3之Arduino开发环境
保证接口数据安全的10种方案
Three. JS introductory learning notes 07: external model import -c4d to JSON file for web pages -fbx import
After UE4 is packaged, mesh has no material problem
Asynchronous application of generator function
The bank needs to build the middle office capability of the intelligent customer service module to drive the upgrade of the whole scene intelligent customer service
15. Using the text editing tool VIM
航运船公司人工智能AI产品成熟化标准化规模应用,全球港航人工智能/集装箱人工智能领军者CIMC中集飞瞳,打造国际航运智能化标杆
随机推荐
HW初级流量监控,到底该怎么做
【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
2. Basic knowledge of golang
OpenGL's distinction and understanding of VAO, VBO and EBO
Getting started with webgl (4)
【数字IC验证快速入门】19、SystemVerilog学习之基本语法6(线程内部通信...内含实践练习)
Three. JS introductory learning notes 11:three JS group composite object
[quick start of Digital IC Verification] 22. Ahb-sramc of SystemVerilog project practice (2) (Introduction to AMBA bus)
航运船公司人工智能AI产品成熟化标准化规模应用,全球港航人工智能/集装箱人工智能领军者CIMC中集飞瞳,打造国际航运智能化标杆
Learn good-looking custom scroll bars in 1 minute
2022全开源企业发卡网修复短网址等BUG_2022企业级多商户发卡平台源码
Detailed explanation of unity hot update knowledge points and introduction to common solution principles
[quick start of Digital IC Verification] 24. AHB sramc of SystemVerilog project practice (4) (AHB continues to deepen)
银行需要搭建智能客服模块的中台能力,驱动全场景智能客服务升级
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
numpy--疫情数据分析案例
Iterator and for of.. loop
C4D learning notes 1- animation - animation key frames
AB package details in unity (super detail, features, packaging, loading, manager)
The download button and debug button in keil are grayed out