当前位置:网站首页>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 effectReduce 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.TMerge
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
边栏推荐
- Steps to create P8 certificate and warehousing account
- Zhongang Mining: Fluorite continues to lead the growth of new energy market
- Getting started with webgl (3)
- ./ Functions of configure, make and make install
- [wechat applet] Chapter (5): basic API interface of wechat applet
- 从 1.5 开始搭建一个微服务框架链路追踪 traceId
- Simple understanding and application of TS generics
- Mesh merging under ue4/ue5 runtime
- Detailed explanation of Cocos creator 2.4.0 rendering process
- AB package details in unity (super detail, features, packaging, loading, manager)
猜你喜欢

C4D learning notes 2- animation - timeline and time function
![Super signature principle (fully automated super signature) [Yun Xiaoduo]](/img/b8/5bafbada054b335568e64c7e1ac6bb.jpg)
Super signature principle (fully automated super signature) [Yun Xiaoduo]

【数字IC验证快速入门】29、SystemVerilog项目实践之AHB-SRAMC(9)(AHB-SRAMC SVTB Overview)

Spin animation of Cocos performance optimization

Cocos creator collision and collision callback do not take effect
![[quick start of Digital IC Verification] 23. AHB sramc of SystemVerilog project practice (3) (basic points of AHB protocol)](/img/e9/9e32e38e12e1fa71732c52b8ee0ab0.png)
[quick start of Digital IC Verification] 23. AHB sramc of SystemVerilog project practice (3) (basic points of AHB protocol)

讲师征集令 | Apache SeaTunnel(Incubating) Meetup 分享嘉宾火热招募中!

【数字IC验证快速入门】25、SystemVerilog项目实践之AHB-SRAMC(5)(AHB 重点回顾,要点提炼)

【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AMBA总线介绍)

How to release NFT in batches in opensea (rinkeby test network)
随机推荐
[original] all management without assessment is nonsense!
【Markdown语法高级】让你的博客更精彩(四:设置字体样式以及颜色对照表)
2. Heap sort "hard to understand sort"
After UE4 is packaged, mesh has no material problem
Spin animation of Cocos performance optimization
[wechat applet] Chapter (5): basic API interface of wechat applet
Keil5 does not support online simulation of STM32 F0 series
OpenGL's distinction and understanding of VAO, VBO and EBO
使用Scrapy框架爬取网页并保存到Mysql的实现
Three. JS introductory learning notes 07: external model import -c4d to JSON file for web pages -fbx import
Gd32 F3 pin mapping problem SW interface cannot be burned
How to understand that binary complement represents negative numbers
nodejs package. JSON version number ^ and~
Three. JS introductory learning notes 11:three JS group composite object
Three. JS introductory learning notes 04: external model import - no material obj model
使用cpolar建立一个商业网站(2)
Steps to create P8 certificate and warehousing account
Tkinter after how to refresh data and cancel refreshing
How to build your own super signature system (yunxiaoduo)?
Three. Introduction to JS learning notes 17: mouse control of 3D model rotation of JSON file