_Tiket asli http://projects.scipy.org/numpy/ticket/1316 pada 07-12-2009 oleh
Ini adalah operasi yang masuk akal. Akan menyenangkan untuk membuatnya bekerja jika memungkinkan.
In [25]: x.max()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/wonkabar/data1/builds/betadrizzle/<ipython console> in <module>()
TypeError: cannot perform reduce with flexible type
In [26]: x.min()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/wonkabar/data1/builds/betadrizzle/<ipython console> in <module>()
TypeError: cannot perform reduce with flexible type
In [27]:
Ini harus bisa dilakukan. Perhatikan bahwa argmax
dan argmin
berfungsi dan mungkin memberikan dan cara mudah untuk mengimplementasikan ini tanpa menggunakan maximum.reduce
.
.max
dapat mengambil tupel sumbu, argmax
hanya dapat menangani satu axis
, jadi untuk membuatnya berfungsi untuk kasus umum akan membutuhkan banyak pengocokan sumbu , dan mungkin menyalin untuk menggabungkan sumbu tersebut. keepdims
dan out
juga ada di tanda tangan max
tetapi bukan dari argmax
. Jenis apa yang akan terlibat? 'S', 'U' dan 'V'?
Apakah ini masalah yang sama seperti yang dijelaskan dalam nr.
In [1]: np.array([['dd', 'de', 'cc'], ['ae', 'be', 'hf']]).max(axis=0)
TypeError: cannot perform reduce with flexible type
Untuk pertanyaan @jondo (hampir 4 tahun yang lalu pada saat ini tetapi layak untuk
Keluhan Dr Feldman paling baik diungkapkan dengan sebuah contoh. Dia mengatakan "Karena metode .min() dan .max() NumPy bekerja untuk array numerik, dan fungsi min() dan max() Python bekerja untuk string, orang mungkin mengharapkan metode .min() dan .max() NumPy untuk bekerja untuk array string, tetapi mereka tidak[...]"
Berikut ilustrasinya:
import numpy as np
arr_str = np.array(["I'm", "Defying", "Gravity"]) #A wickedly simple array of strings
print(arr_str.max()) #raises "TypeError: cannot perform reduce with flexible type"
#Interestingly, when I just used a native Python list, the error for this line was: "AttributeError: 'list' object has no attribute 'max'"
print(max(arr_str)) #does not raise any kind of error and returns "I'm" no matter where it is in the array of strings above
#This code works as expected
arr_num = np.array([1,2,3,-1])
print(max(arr_num))
Masalah Dr Feldman seperti yang dia nyatakan adalah tentang array string dan ingin menggunakan .max() daripada max(); tetapi kami dapat memperluasnya ke masalah tentang jenis fleksibel apa pun. Perhatikan bahwa dia tidak menyebutkan bahwa max() berfungsi dengan baik ketika kita meneruskan array sebagai parameter, tetapi seperti yang Anda lihat dari contoh di atas, itu berfungsi.
Saya memverifikasi apa yang dikatakan @charris , bahwa .argmax() berfungsi.
Pertanyaan saya untuk komunitas adalah: apakah ini cukup menjadi masalah (harus menggunakan max(list) atau list.argmax) sehingga layak untuk menyelami masalah sumbu yang diangkat oleh