de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 BFTM
BFTM
Question

Numpy: Bagilah setiap baris dengan elemen vektor

Misalkan saya memiliki numpy array:

data = np.array([[1,1,1],[2,2,2],[3,3,3]])

dan saya memiliki yang sesuai "vektor:"

vector = np.array([1,2,3])

Bagaimana saya beroperasi pada data di sepanjang setiap baris untuk mengurangi atau membagi jadi hasilnya adalah:

sub_result = [[0,0,0], [0,0,0], [0,0,0]]
div_result = [[1,1,1], [1,1,1], [1,1,1]]

Singkat cerita: Bagaimana saya melakukan operasi pada setiap baris dari 2D array dengan 1D array skalar yang sesuai untuk setiap baris?

101 2013-10-26T02:34:28+00:00 5
Pemrograman
arrays
python
numpy
scipy
Solution / Answer
 JoshAdel
JoshAdel
26 Oktober 2013 в 2:38
2013-10-26T02:38:15+00:00
Lebih
Sumber
Sunting
#22625992

Di sini anda pergi. Anda hanya perlu menggunakan None (atau np.newaxis) yang dikombinasikan dengan penyiaran:

In [6]: data - vector[:,None]
Out[6]:
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

In [7]: data / vector[:,None]
Out[7]:
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
157
0
 IanH
IanH
26 Oktober 2013 в 4:10
2013-10-26T04:10:05+00:00
Lebih
Sumber
Sunting
#22625993

Seperti yang telah disebutkan, mengiris dengan Tidak atau dengan np.newaxes adalah cara yang bagus untuk melakukan hal ini. Alternatif lain adalah dengan menggunakan transposes dan penyiaran, seperti di

(data.T - vector).T

dan

(data.T / vector).T

Untuk tinggi dimensi array anda mungkin ingin menggunakan swapaxes metode NumPy array atau NumPy rollaxis fungsi. Sebenarnya ada banyak cara untuk melakukan hal ini.

Untuk penjelasan lebih lengkap tentang penyiaran, lihat http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

10
0
 stackoverflowuser2010
stackoverflowuser2010
8 September 2016 в 10:38
2016-09-08T22:38:11+00:00
Lebih
Sumber
Sunting
#22625994

JoshAdel's solusi menggunakan np.newaxis untuk menambahkan dimensi. Alternatif lain adalah dengan menggunakan membentuk() untuk menyelaraskan dimensi dalam persiapan untuk penyiaran.

data = np.array([[1,1,1],[2,2,2],[3,3,3]])
vector = np.array([1,2,3])

data
# array([[1, 1, 1],
#        [2, 2, 2],
#        [3, 3, 3]])
vector
# array([1, 2, 3])

data.shape
# (3, 3)
vector.shape
# (3,)

data / vector.reshape((3,1))
# array([[1, 1, 1],
#        [1, 1, 1],
#        [1, 1, 1]])

Melakukan reshape() memungkinkan dimensi untuk berbaris untuk penyiaran:

data:            3 x 3
vector:              3
vector reshaped: 3 x 1

Perhatikan bahwa data/vektorok, tapi itu doesn't membuat anda mendapatkan jawaban yang anda inginkan. Membagi masing-masing *kolom* dariarray(bukan masing-masing *baris*) oleh masing-masing unsur terkait darivektor. It's apa yang akan anda dapatkan jika anda secara eksplisit dibentuk kembalivektormenjadi1x3bukan3x1`.

data / vector
# array([[1, 0, 0],
#        [2, 1, 0],
#        [3, 1, 1]])
data / vector.reshape((1,3))
# array([[1, 0, 0],
#        [2, 1, 0],
#        [3, 1, 1]])
1
0
shantanu pathak
shantanu pathak
21 Maret 2019 в 4:52
2019-03-21T04:52:21+00:00
Lebih
Sumber
Sunting
#22625995

Pythonic cara untuk melakukan ini adalah ...

np.divide(data,vector)

Ini mengurus membentuk kembali dan juga hasil yang di format floating point. Di lain hasil jawaban dalam format bilangan bulat.

#CATATAN: Tidak ada kolom di kedua data dan vektor harus sesuai

1
0
 meow
meow
10 Juli 2019 в 11:35
2019-07-10T11:35:42+00:00
Lebih
Sumber
Sunting
#22625996

Menambahkan jawaban dari stackoverflowuser2010, dalam kasus umum anda hanya dapat menggunakan

data = np.array([[1,1,1],[2,2,2],[3,3,3]])

vector = np.array([1,2,3])

data / vector.reshape(-1,1)

Ini akan mengubah vektor menjadi kolom matriks/vektor. Memungkinkan anda untuk melakukan elementwise operasi seperti yang anda inginkan. Setidaknya untuk saya, ini adalah cara yang paling intuitif untuk pergi tentang itu dan sejak (dalam kebanyakan kasus) numpy hanya akan menggunakan tampilan yang sama memori internal untuk membentuk's efisien juga.

 meow
meow
Jawaban edit 10 Juli 2019 в 11:57
0
0
Related communities 6
Python Indonesia
Python Indonesia
24 631 pengguna
Programmer Python Indonesia. Group ini dikelola oleh sejumlah admin. Baca pesan tersemat / pinned message: https://t.me/pythonID/217588
Buka telegram
Indonesian Python Warriors
Indonesian Python Warriors
1 462 pengguna
Di grup ini tidak ada kewajiban untuk menggunakan username dan foto. Yang tidak boleh adalah spamming. Gak boleh baper, kalau nanya yang bener, eror jangan difoto pake HP, gunakan screenshot, code copas ke pastebin.com lalu share link ke sini.
Buka telegram
Python-ID Jogja
Python-ID Jogja
962 pengguna
Buka telegram
BASIC PYTHON INDONESIA
BASIC PYTHON INDONESIA
220 pengguna
Buka telegram
Python Newbie Indonesia
Python Newbie Indonesia
181 pengguna
Peraturan grup Python Newbie 🌻Dilarang spam 🌻Dilarang menggunakan bahasa kasar 🌻Dilarang beriklan di grup tanpa seizin admin Beberapa video dasar python dapat diliat melalui channel youtube juan aditya Jangan lupa untuk subscribe ya🙏
Buka telegram
PythonWealth Indonesia 🇮🇩
PythonWealth Indonesia 🇮🇩
29 pengguna
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 15 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi