de-vraag
  • Sorular
  • Etiketler
  • Kullanıcılar
Bildirimler
Ödüller
Kayıt
Kaydolduktan sonra, sorularınıza verilen yanıtlar ve yorumlar size bildirilecektir.
Oturum aç
Zaten bir hesabınız varsa, yeni bildirimleri kontrol etmek için giriş yapın.
Eklenen sorular, cevaplar ve yorumlar için ödüller olacaktır.
Daha
Kaynak
Düzenle
 Donbeo
Donbeo
Question

NumPy'de bir dizi nasıl normalleştirilir?

Bir NumPy dizisinin normuna sahip olmak istiyorum. Daha spesifik olarak, bu fonksiyonun eşdeğer bir versiyonunu arıyorum

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

Skearnveyanumpy` içinde buna benzer bir şey var mı?

Bu fonksiyon vnin 0 vektörü olduğu durumlarda çalışır.

165 2014-01-09T20:25:03+00:00 3
 kmario23
kmario23
Edited question 2019ösp3ös23 Nisan 2019 в 11:03
Programlama
normalization
python
statistics
numpy
scikit-learn
This question has 1 Cevap in English, to read them log in to your account.
Solution / Answer
 ali_m
ali_m
2014ösp15ös21 Ocak 2014 в 9:15
2014-01-09T21:15:33+00:00
Daha
Kaynak
Düzenle
#23325572

Eğer scikit-learn kullanıyorsanız sklearn.preprocessing.normalize kullanabilirsiniz:

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
 ali_m
ali_m
Edited answer 2014ösp27ös21 Ocak 2014 в 9:27
126
0
Eelco Hoogendoorn
Eelco Hoogendoorn
2014ösp59ös21 Ocak 2014 в 9:59
2014-01-09T21:59:18+00:00
Daha
Kaynak
Düzenle
#23325573

Böyle bir işlevin birlikte verilen pillerin bir parçası olmasının iyi olacağını kabul ediyorum. Ama bildiğim kadarıyla öyle değil. İşte rastgele eksenler için ve optimum performans veren bir versiyon.

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)))
Guillaume Jacquenot
Guillaume Jacquenot
Edited answer 2017ööp5öö8 Ekim 2017 в 8:05
37
0
Eduard Feicho
Eduard Feicho
2016ösp49ös12 Kasım 2016 в 12:49
2016-11-01T12:49:49+00:00
Daha
Kaynak
Düzenle
#23325574

L1 normunu elde etmek için ord belirtebilirsiniz. Sıfır bölmeden kaçınmak için eps kullanıyorum, ancak bu belki de harika değil.

def normalize(v):
    norm=np.linalg.norm(v, ord=1)
    if norm==0:
        norm=np.finfo(v.dtype).eps
    return v/norm
17
0
Related communities 1
Python Türkiye
Python Türkiye
39 users
Python ilgililerinin Türkiye topluluğudur. Discord => https://discord.gg/2FdmXUE @JavaScriptTR @ReactTR @VuejsTR @NodeTR
Open telegram
Soru ekleyin
Kategoriler
Herşey
Teknoloji
Kültür / Rekreasyon
Yaşam / Sanat
Bilim
Profesyonel
İş Dünyası
Kullanıcılar
All
New
Popular
1
Akshit Mehta
Registered 2 gün önce
2
me you
Registered 5 gün önce
3
Никита иванов
Registered 1 hafta önce
4
Alex1976G_06
Registered 1 hafta önce
5
Alexey Sokolov
Registered 2 hafta önce
DE
EL
ES
FR
ID
IT
JA
KO
NL
PT
RU
TR
ZH
© de-vraag 2022
Kaynak
stackoverflow.com
Lisans altında cc by-sa 3.0 atıf ile