Vector¶
Vector is base class of other vector like classes. It represents a series of vectors.
In [1]:
from py3d import Vector
Vector()
Out[1]:
Vector([], dtype=float64)
In [3]:
Vector([0, 0, 0, 0])
Out[3]:
Vector([0, 0, 0, 0])
In [5]:
Vector([1, 2, -4])
Out[5]:
Vector([ 1, 2, -4])
In [7]:
Vector([1, 2, 3]).tile(2)
Out[7]:
Vector([[1, 2, 3], [1, 2, 3]])
In [9]:
import py3d
py3d.Vector([1, 2, 0, 3])
Out[9]:
Vector([1, 2, 0, 3])
In [10]:
Vector([1]).tile(2)
Out[10]:
Vector([[1], [1]])
Get unit vector
In [12]:
import py3d
V32 = py3d.Vector([
[1, 3],
[2, -9],
[0.1, -3]])
V32.U
Out[12]:
Vector([[ 0.31622777, 0.9486833 ], [ 0.21693046, -0.97618706], [ 0.03331483, -0.99944491]])
Get length of vectors
In [13]:
V32.L
Out[13]:
array([3.16227766, 9.21954446, 3.0016662 ])
In [15]:
from numpy import allclose
assert allclose(V32.U.L, [[1], [1], [1]])
Get homogeneous vector
In [16]:
V32.H
Out[16]:
Vector3([[ 1. , 3. , 1. ], [ 2. , -9. , 1. ], [ 0.1, -3. , 1. ]])
Get a series of random vectors
In [18]:
import py3d
py3d.rand(2, 3, 4)
Out[18]:
Vector4([[[0.96626214, 0.70562362, 0.06684771, 0.59174593], [0.50629915, 0.24173588, 0.06373876, 0.89654226], [0.75701832, 0.89159202, 0.44128003, 0.05887947]], [[0.54687797, 0.59475947, 0.19111112, 0.25128102], [0.48110057, 0.24699633, 0.1305743 , 0.35705752], [0.82655575, 0.93939962, 0.16160806, 0.2363428 ]]])
In [20]:
import py3d
py3d.Vector([[0, 0], [1, 2], [3, 4]]).diff()
Out[20]:
Vector([[1, 2], [2, 2]])
Get a flattened copy of a vector
In [22]:
import py3d
py3d.Vector([[[1,2,3]],[[4,5,6]]]).flatten()
Out[22]:
Vector([[1, 2, 3], [4, 5, 6]])
Fill nan elements of a Vector
In [24]:
import py3d
py3d.Vector([0, 1, float("nan")]).fillna(-1)
Out[24]:
Vector([ 0., 1., -1.])
Drop duplicates
In [25]:
import py3d
py3d.Vector([
[1,2,1],
[2,3,4],
[1,2,1],
[5,3,4]
]).unique()
Out[25]:
Vector([[1, 2, 1], [2, 3, 4], [5, 3, 4]])
Read a txt file storing poses
In [26]:
import py3d
py3d.read_txt("poses.txt")
Out[26]:
Vector([[ 1.00000000e+00, -3.80098575e-01, -9.24678213e-01, -2.22547866e-02, 8.46246797e+02, -9.23810709e-01, 3.80713880e-01, -4.03821316e-02, 3.72507563e+03, 4.58131834e-02, 5.21001950e-03, -9.98936438e-01, 1.15277604e+02], [ 9.00000000e+00, -3.34781384e-01, -9.41921870e-01, -2.65446075e-02, 8.46339549e+02, -9.41148328e-01, 3.35630805e-01, -3.98972180e-02, 3.72529806e+03, 4.64892502e-02, 1.16255671e-02, -9.98851138e-01, 1.15261281e+02], [ 1.40000000e+01, -2.92967993e-01, -9.55757956e-01, -2.63910066e-02, 8.46403792e+02, -9.55019148e-01, 2.93844004e-01, -3.99265447e-02, 3.72550887e+03, 4.59149518e-02, 1.35067170e-02, -9.98854036e-01, 1.15246581e+02], [ 2.20000000e+01, -2.55823106e-01, -9.66433871e-01, -2.36666831e-02, 8.46452174e+02, -9.65654193e-01, 2.56614723e-01, -4.07536888e-02, 3.72572334e+03, 4.54589646e-02, 1.24280965e-02, -9.98888895e-01, 1.15235256e+02], [ 3.00000000e+01, -2.21980891e-01, -9.74885116e-01, -1.79859637e-02, 8.46498002e+02, -9.74096121e-01, 2.22541934e-01, -4.01476730e-02, 3.72595586e+03, 4.31420000e-02, 8.60804130e-03, -9.99031866e-01, 1.15230213e+02], [ 3.50000000e+01, -1.89591125e-01, -9.81721142e-01, -1.66974492e-02, 8.46543252e+02, -9.80764734e-01, 1.90155814e-01, -4.40602123e-02, 3.72619118e+03, 4.64299590e-02, 8.02284410e-03, -9.98889330e-01, 1.15216815e+02], [ 5.30000000e+01, -1.52544592e-01, -9.88232558e-01, -1.12498162e-02, 8.46578518e+02, -9.87793431e-01, 1.52820235e-01, -3.01680937e-02, 3.72641248e+03, 3.15322920e-02, 6.51051500e-03, -9.99481530e-01, 1.15240333e+02], [ 5.70000000e+01, -1.08222204e-01, -9.94126669e-01, -3.45932600e-04, 8.46594185e+02, -9.93640561e-01, 1.08180154e-01, -3.12328284e-02, 3.72664364e+03, 3.10868107e-02, -3.03635290e-03, -9.99512076e-01, 1.15239078e+02], [ 6.10000000e+01, -5.47405853e-02, -9.98500181e-01, -9.25326500e-04, 8.46621932e+02, -9.98321631e-01, 5.47482953e-02, -1.88823863e-02, 3.72687760e+03, 1.89047262e-02, -1.09859400e-04, -9.99821284e-01, 1.15261382e+02], [ 6.50000000e+01, 2.32873930e-03, -9.99995499e-01, 1.89191590e-03, 8.46628861e+02, -9.99959160e-01, -2.34516750e-03, -8.72806030e-03, 3.72713067e+03, 8.73245790e-03, -1.87151330e-03, -9.99960120e-01, 1.15274254e+02]])
Write csv file
In [27]:
import py3d
py3d.Vector([[1,2,3],[4,5,6]], columns=["t","x","y"]).to_csv("tmp.csv")
Read csv file
In [28]:
import py3d
a=py3d.read_csv("tmp.csv")
a[["t","x"]]
Out[28]:
Vector([[1., 2.], [4., 5.]])
Read pcd file
In [29]:
import py3d
py3d.read_pcd("ascii.pcd").xyz.as_point()
Out[29]:
In [30]:
import py3d
pcd = py3d.read_pcd("binary.pcd")
print("min", pcd.min())
print("max", pcd.max())
pcd.xyz.as_point(colormap=pcd.w)
min [-1.09082863e+02 -4.56674919e+01 -4.33038330e+00 2.50000000e+01 1.22393358e+09] max [9.74602280e+01 8.35153122e+01 4.22846746e+00 2.55000000e+02 1.22393358e+09]
Out[30]: