NumPy에서 배열을 정규화하는 방법

하나의 NumPy 배열의 규범을 가지고 싶습니다. 좀 더 구체적으로, 나는 이 기능의 동등한 버전을 찾고 있다.

def normalize(v):
    norm = np.linalg.norm(v)
    if norm == 0: 
       return v
    return v / norm

skearn이나 numpy에 그런 게 있나요?

이 함수는 'v'가 0벡터인 상황에서 작동합니다.

질문에 대한 의견 (5)
해결책

skit-learn을 사용하는 경우 'sklearn.sklearn.sklarning.processing.filename')을 사용할 수 있습니다.

import numpy as np
from sklearn.preprocessing import normalize

x = np.random.rand(1000)*10
norm1 = x / np.linalg.norm(x)
norm2 = normalize(x[:,np.newaxis], axis=0).ravel()
print np.all(norm1 == norm2)
# True
해설 (4)

그러한 기능이 포함된 배터리에 포함되었으면 좋겠다고 생각합니다. 하지만 제가 알기로는 그렇습니다. 다음은 임의의 축을 위한 버전으로, 최적의 성능을 제공합니다.

import numpy as np

def normalized(a, axis=-1, order=2):
    l2 = np.atleast_1d(np.linalg.norm(a, order, axis))
    l2[l2==0] = 1
    return a / np.expand_dims(l2, axis)

A = np.random.randn(3,3,3)
print(normalized(A,0))
print(normalized(A,1))
print(normalized(A,2))

print(normalized(np.arange(3)[:,None]))
print(normalized(np.arange(3)))
해설 (10)

순서를 지정하여 L1 규범을 가져올 수 있습니다. 0 나눗셈을 피하기 위해 엡스를 사용하지만, 그것은 좋지 않을 수도 있다.

def normalize(v):
    norm=np.linalg.norm(v, ord=1)
    if norm==0:
        norm=np.finfo(v.dtype).eps
    return v/norm
해설 (1)

합은 다차원 데이터 및 로렌아줌마가 경우 각 축의 표준화된 맥스야 또는 그 있다.

def normalize(_d, to_sum=True, copy=True):
    # d is a (n x dimension) np array
    d = _d if not copy else np.copy(_d)
    d -= np.min(d, axis=0)
    d /= (np.sum(d, axis=0) if to_sum else np.ptp(d, axis=0))
    return d

/Dev/raw/raw1 누마프스 [피크 최대] (https://docs.scipy.org/doc/numpy-1.14 .0/reference/generated/numpy.ptp.html) 함수.

a = np.random.random((5, 3))

b = normalize(a, copy=False)
b.sum(axis=0) # array([1., 1., 1.]), the rows sum to 1

c = normalize(a, to_sum=False, copy=False)
c.max(axis=0) # array([1., 1., 1.]), the max of each row is 1
해설 (0)

이 를 사용할 수도 있습니다

import numpy as np
normalized_v = v / np.sqrt(np.sum(v**2))

그러나 장애가 발생한 경우 'v' 의 길이 0.

&lt &gt -;;!

해설 (0)

또한 함수 () '의 인기 있는' unit_vector 정상화를 통해 [변형] [1] 모듈에서는 크리스토프 게오르크:

import transformations as trafo
import numpy as np

data = np.array([[1.0, 1.0, 0.0],
                 [1.0, 1.0, 1.0],
                 [1.0, 2.0, 3.0]])

print(trafo.unit_vector(data, axis=1))

[1]: https://www.lfd.uci.edu/ ~ gohlke/code/transformations.py.html

해설 (0)

스케쳐내 ᄂ씨 치수 기능을 정상화 저장됩니까 dl3d 텐서, 피터크 벡터를 사용할 수도 있습니다.

import numpy as np
from torch import FloatTensor
from torch.nn.functional import normalize

vecs = np.random.rand(3, 16, 16, 16)
norm_vecs = normalize(FloatTensor(vecs), dim=0, eps=1e-16).numpy()
해설 (0)

39, 벡터, re apc® you& 경우 3D 를 이용한 툴 벨트 사용 할 수 있는 이 간결하게 [vg] (https://github.com/lace/vg). # 39 위에 가볍게 레이어에는 it& 누마피) 와 정보기술 (it), s 는 단일 가치와 스택된 벡터.

import numpy as np
import vg

x = np.random.rand(1000)*10
norm1 = x / np.linalg.norm(x)
norm2 = vg.normalize(x)
print np.all(norm1 == norm2)
# True

도서관에서 시작, 여기서 내가 만들어 내 마지막 전송되었기 의한 동기 부여 /dev/raw/raw1 다음과 같습니다. 너무 자세히 누마피) 에 있는 간단한 아이디어를.

해설 (0)

그래서 당신이 말한 키트입니다 있다. 배우고, 또 다른 솔루션을 공유하지는 싶어요.

키트입니다 있다. 민막스카러 '학습'

키트입니다 있다. 배울 수 있는 '에서 볼 수 있습니다' 라는 가치를 사용자정의할 apiu 민막스카러 maxvalorarray 원하는 대로.

또한 난 문제를 다루는 미국.

&gt. Nan 값을 누각되었습니다 취급됩니다. 오래 가지 fit 의 및 유지 &gt. 변형. . 지켜보리니 참조서 [1]

코드 예제

이 코드는 단순해졌습니다, 그냥 유형

# Let's say X_train is your input dataframe
from sklearn.preprocessing import MinMaxScaler
# call MinMaxScaler object
min_max_scaler = MinMaxScaler()
# feed in a numpy array
X_train_norm = min_max_scaler.fit_transform(X_train.values)
# wrap it up if you need a dataframe
df = pd.DataFrame(X_train_norm)

참조

해설 (0)

39 don& 최대한 줄일 수 있다면, t need precisiontm 너회의 함수를 다음과 같이 사용된다.

v_norm = v / (np.linalg.norm(v) + 1e-16)
해설 (0)

'그냥' 없이 '와' 세리안 사용하여 누마피. 그냥 정의하시려면 함수.

          • 및 열 것으로 보고 이 행뿐만 오른길로 com/go/4e6b330a_kr 샘플 (= 1 '축') *

"' np 누마피 임포트합니다 있다

예제에서와 어레이입니다

X = np.라이 ([[1.2,3], [4.5,6]])

데프 스테드미트스 (X): 고말은 짓궂군요 (축 = 1) = X. std = X. 표준용량 (축 = 1, 도프 = 1) X = X - 고말은 [np.뉴라시스:] X = X / std [np.뉴라시스:] np.nan_to_num 반품하십시오 (X)

"'

  • output:*

"' X 어레이입니다 ([[1, 2, 3] [4, 5, 6]])

스테드미트스 (X) 어레이입니다 ([[- 1, 0, 1.] [- 1, 0, 1.]])

"'

해설 (0)

빠르게 작업할 때 다음과 같은 다차원 배열 솔루션을 사용할 수 있습니다.

우리는 우리가 원하는 마지막 축으로만 정상화를 통해 2D 어레이입니다 말하도다 있는 반면, 일부 행뿐만 %s/dbase/ext_table. 제로 기본이다.

"'파이썬 np 누마피 임포트합니다 있다 도착 = np.라이 ([ [1, 2, 3] [0, 0, 0) [5, 6, 7] ], np.플로이트 트리프 =)

사이의길이 = np.린알고드노르마 (도착, 축 (axis) = - 1)

보기인쇄 (길이) [3.74165739 10.48808848 0.]

[사이의길이 &gt, 도착 0] = 도착 [사이의길이 &gt. 사이의길이 0] / [사이의길이 &gt. 0] [np.뉴라시스:] 보기인쇄 (도착)

[[0.26726124 0.53452248 0.80178373]

[0, 0, 0.]

[0.47673129 0.57207755 0.66742381]]

"'

해설 (0)