Python: Data Calculating Skills
2D points cloud
Distance of two points
delftstack
math.dist()from scipy.spatial import distance a = (1 , 2 , 3 ) b = (4 , 5 , 6 ) print(distance.euclidean(a, b))
Longest distance of points in a point cloud
The longest distance of points between any two points.
Yann, 2015
from numpy import random, nanmax, argmax, unravel_indexfrom scipy.spatial.distance import pdist, squareform A = random.randint(-5 ,5 , (500 ,2 )) D = pdist(A) D = squareform(D); N, [I_row, I_col] = nanmax(D), unravel_index( argmax(D), D.shape ) A[I_row] A[I_col]
Nearest adjacent point
import numpy as npimport math p1 = [1 ,2 ] p_list = [[2 ,1 ], [1 ,2 ], [0 ,0 ]] p_list[np.array([math.dist(p1, i) for i in p_list]).argmin()]
Distance from points to line
© DotPi, 2016
point p3
to line p1-p2
from numpy.linalg import norm p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) d = norm(np.cross(p2-p1, p1-p3))/norm(p2-p1)
Distance from points to rectangle
p1----p2
| p5 |
| |
p4----p3
from point p5
to rectangle p1,p2,p3,p4
from numpy.linalg import normdef lin_dist (p1, p2, p3 ): d = norm(np.cross(p2-p1, p1-p3))/norm(p2-p1) return ddef p_rect (p1,p2,p3,p4,p5 ): d1 = lin_dist(p1,p2,p5) d2 = lin_dist(p1,p4,p5) d3 = lin_dist(p3,p2,p5) d4 = lin_dist(p3,p4,p5) return min ([d1,d2,d3,d4]) p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) p4=(x4,y4) p5=(x5,y5) p_rect(p1,p2,p3,p4,p5)
Points rotation
© an0nym0use; 2020
P1
and P2
are points in points
. Rotate the P1
to the same level as P2
, so as the rest of others.
import numpy as npdef rotate (point, origin, degrees ): radians = np.deg2rad(degrees) x,y = point offset_x, offset_y = origin adjusted_x = (x - offset_x) adjusted_y = (y - offset_y) cos_rad = np.cos(radians) sin_rad = np.sin(radians) qx = offset_x + cos_rad * adjusted_x + sin_rad * adjusted_y qy = offset_y + -sin_rad * adjusted_x + cos_rad * adjusted_y return qx, qy
Angles of two points
This codes works perfect to me.
© sabbahillel; 2017
import math myradians = math.atan2(targetY-gunY, targetX-gunX) mydegrees = math.degrees(myradians) myradians = math.radians(mydegrees)def point2agl (P1, P2 ): myradians = math.atan2(P1[1 ]-P2[1 ], P1[0 ]-P2[0 ]) mydegrees = math.degrees(myradians) return mydegrees
Angle of three points
© Manivannan Murugavel
import mathdef getAngle (a, b, c ): ang = math.degrees(math.atan2(c[1 ]-b[1 ], c[0 ]-b[0 ]) - math.atan2(a[1 ]-b[1 ], a[0 ]-b[0 ])) return return ang - 360 if ang >= 360 else ang print(getAngle((5 , 0 ), (0 , 0 ), (0 , 5 )))
Angle of two vectors
© adamsmith.haus
import numpy as npimport math vector_1 = [0 , 1 ] vector_2 = [1 , 0 ]def Vector_angle (vector_1, vector_2 ): unit_vector_1 = vector_1 / np.linalg.norm(vector_1) unit_vector_2 = vector_2 / np.linalg.norm(vector_2) dot_product = np.dot(unit_vector_1, unit_vector_2) angle = np.arccos(dot_product) mydegrees = math.degrees(angle) return mydegrees ang = Vector_angle(vector_1, vector_2) print(ang)
SO, we can have angle of 4 points:
P1 = np.array([0 ,1 ]) P2 = np.array([1 ,1 ]) P3 = np.array([1 ,2 ]) P4 = np.array([3 ,1 ]) vector_1 = P2 - P1 vector_2 = P3 - P2 ang = Vector_angle(vector_1, vector_2) print(ang)def Points4_angle (P1, P2, P3, P4 ): P1 = np.array(P1) P2 = np.array(P2) P3 = np.array(P3) P4 = np.array(P4) vector_1 = P2 - P1 vector_2 = P4 - P3 unit_vector_1 = vector_1 / np.linalg.norm(vector_1) unit_vector_2 = vector_2 / np.linalg.norm(vector_2) dot_product = np.dot(unit_vector_1, unit_vector_2) angle = np.arccos(dot_product) mydegrees = math.degrees(angle) return mydegrees
Find the end point by angele and length
import mathimport matplotlib.pyplot as plt Angle = 30 Radian = 0.5 Origin = (0.5 , 0.5 ) End_x = math.cos(math.radians(Angle)) * Radian End_y = math.sin(math.radians(Angle)) * Radian plt.arrow(Origin[0 ], Origin[0 ], End_x, End_y, head_width = 0.1 , width = 0.03 ) plt.show()
Test
import cv2import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns NP_result = np.load("/mnt/8A26661926660713/Deng/Cell_segmentation/CellSegmentation/Results/220214_all_channels/images/lgl.3d.casp.1.lsm2_seg.npy" , allow_pickle=True ) A = NP_result.all ()['masks' ] index = pd.MultiIndex.from_product( (*map (range , A.shape[:2 ]), (['r' ])), names=('col' ,'row' , None ) ) df = pd.Series(A.flatten(), index=index) df = df.unstack() df = df.reset_index().reindex(columns=['row' , 'col' , 'r' ]) sns.scatterplot(data=df[df.r!=0 ], x= "row" , y="col" , hue = "r" ) plt.show()
Second to format Hour and min
studytonight.com
seconds = 12601 seconds = seconds % (24 * 3600 ) hour = seconds // 3600 seconds %= 3600 minutes = seconds // 60 seconds %= 60 print("%d:%02d:%02d" % (hour, minutes, seconds))
3:30:01