하나의 NumPy 배열의 규범을 가지고 싶습니다. 좀 더 구체적으로, 나는 이 기능의 동등한 버전을 찾고 있다.
def normalize(v):
norm = np.linalg.norm(v)
if norm == 0:
return v
return v / norm
skearn이나 numpy에 그런 게 있나요?
이 함수는 'v'가 0벡터인 상황에서 작동합니다.
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
그러한 기능이 포함된 배터리에 포함되었으면 좋겠다고 생각합니다. 하지만 제가 알기로는 그렇습니다. 다음은 임의의 축을 위한 버전으로, 최적의 성능을 제공합니다.
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)))
합은 다차원 데이터 및 로렌아줌마가 경우 각 축의 표준화된 맥스야 또는 그 있다.
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
또한 함수 () '의 인기 있는' 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
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 다음과 같습니다. 너무 자세히 누마피) 에 있는 간단한 아이디어를.
그래서 당신이 말한 키트입니다 있다. 배우고, 또 다른 솔루션을 공유하지는 싶어요.
키트입니다 있다. 배울 수 있는 '에서 볼 수 있습니다' 라는 가치를 사용자정의할 apiu 민막스카러 maxvalorarray 원하는 대로.
또한 난 문제를 다루는 미국.
>. Nan 값을 누각되었습니다 취급됩니다. 오래 가지 fit 의 및 유지 >. 변형. . 지켜보리니 참조서 [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)
'그냥' 없이 '와' 세리안 사용하여 누마피. 그냥 정의하시려면 함수.
"' 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)
"'
"' X 어레이입니다 ([[1, 2, 3] [4, 5, 6]])
스테드미트스 (X) 어레이입니다 ([[- 1, 0, 1.] [- 1, 0, 1.]])
"'
빠르게 작업할 때 다음과 같은 다차원 배열 솔루션을 사용할 수 있습니다.
우리는 우리가 원하는 마지막 축으로만 정상화를 통해 2D 어레이입니다 말하도다 있는 반면, 일부 행뿐만 %s/dbase/ext_table. 제로 기본이다.
"'파이썬 np 누마피 임포트합니다 있다 도착 = np.라이 ([ [1, 2, 3] [0, 0, 0) [5, 6, 7] ], np.플로이트 트리프 =)
사이의길이 = np.린알고드노르마 (도착, 축 (axis) = - 1)
[사이의길이 >, 도착 0] = 도착 [사이의길이 >. 사이의길이 0] / [사이의길이 >. 0] [np.뉴라시스:] 보기인쇄 (도착)
"'