Return length, i.e. eucledian norm, of ndarray along axis. >>> v = numpy.random.random(3) >>> n = vector_norm(v) >>> numpy.allclose(n, numpy.linalg.norm(v)) True >>> v = numpy.random.rand(6, 5, 3) >>> n = vector_norm(v, axis=-1) >>> numpy.allclose(n, numpy.sqrt(numpy.sum
(data, axis=None, out=None)
| 1802 | |
| 1803 | |
| 1804 | def vector_norm(data, axis=None, out=None): |
| 1805 | """Return length, i.e. eucledian norm, of ndarray along axis. |
| 1806 | |
| 1807 | >>> v = numpy.random.random(3) |
| 1808 | >>> n = vector_norm(v) |
| 1809 | >>> numpy.allclose(n, numpy.linalg.norm(v)) |
| 1810 | True |
| 1811 | >>> v = numpy.random.rand(6, 5, 3) |
| 1812 | >>> n = vector_norm(v, axis=-1) |
| 1813 | >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=2))) |
| 1814 | True |
| 1815 | >>> n = vector_norm(v, axis=1) |
| 1816 | >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) |
| 1817 | True |
| 1818 | >>> v = numpy.random.rand(5, 4, 3) |
| 1819 | >>> n = numpy.empty((5, 3), dtype=numpy.float64) |
| 1820 | >>> vector_norm(v, axis=1, out=n) |
| 1821 | >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1))) |
| 1822 | True |
| 1823 | >>> vector_norm([]) |
| 1824 | 0.0 |
| 1825 | >>> vector_norm([1.0]) |
| 1826 | 1.0 |
| 1827 | |
| 1828 | """ |
| 1829 | data = numpy.array(data, dtype=numpy.float64, copy=True) |
| 1830 | if out is None: |
| 1831 | if data.ndim == 1: |
| 1832 | return math.sqrt(numpy.dot(data, data)) |
| 1833 | data *= data |
| 1834 | out = numpy.atleast_1d(numpy.sum(data, axis=axis)) |
| 1835 | numpy.sqrt(out, out) |
| 1836 | return out |
| 1837 | else: |
| 1838 | data *= data |
| 1839 | numpy.sum(data, axis=axis, out=out) |
| 1840 | numpy.sqrt(out, out) |
| 1841 | |
| 1842 | |
| 1843 | def unit_vector(data, axis=None, out=None): |
no outgoing calls
no test coverage detected