我的模型输出了一个densevector列,我想找到argmax。这个页面建议这个函数应该是可用的,但是我不确定语法应该是什么。它是 df.select("mycolumn").argmax() ?
df.select("mycolumn").argmax()
uqdfh47h1#
我在python中找不到argmax操作的文档。但是你可以把它们转换成数组对于pyspark 3.0.0
from pyspark.ml.functions import vector_to_array tst_arr = tst_df.withColumn("arr",vector_to_array(F.col('vector_column'))) tst_max=tst_arr.withColumn("max_value",F.array_max("arr")) tst_max_exp = tst_max.select('*',F.posexplode("arr")) tst_fin = tst_max_exp.where('col==max_value')
对于pyspark<3.0.0
from pyspark.sql.functions import udf @udf def vect_argmax(row): row_arr = row.toArray() max_pos = np.argmax(row_arr) return(int(max_pos)) tst_fin = tst_df.withColumn("argmax",vect_argmax(F.col('probability')))
s4chpxco2#
你试过了吗
from pyspark.sql.functions import col df.select(col("mycolumn").argmax())
2条答案
按热度按时间uqdfh47h1#
我在python中找不到argmax操作的文档。但是你可以把它们转换成数组
对于pyspark 3.0.0
对于pyspark<3.0.0
s4chpxco2#
你试过了吗