#python #numpy #pyspark
#питон #тупица #пыспарк
Вопрос:
Я пытаюсь вставить весь массив numpy 2d в одну строку pyspark… кто-нибудь знает, как этого добиться?
В конечном счете, я хотел бы иметь возможность достичь нижеследующего.. где мой массив numpy находится в одной строке
Я пытался использовать для этого функцию более высокого порядка, но до сих пор не смог заставить ее работать. У кого-нибудь есть какой-нибудь совет?
import pyspark.sql.functions as f import numpy as np df = spark.createDataFrame(np.array([[0. , 0.67235401, 0.35767577], [0.67235401, 0. , 0.2981656 ], [0.35767577, 0.2981656 , 0. ]])) expr = "TRANSFORM(arrays_zip(*), x -gt; struct(*))" df = sms.withColumn('array', f.expr(expr)) df.show(truncate=False)
Ответ №1:
Учитывая a numpy.array
, он может быть преобразован в фрейм данных PySpark после преобразования массива в список python.
Рабочий Пример
import numpy as np np_array = np.array([[0. , 0.67235401, 0.35767577], [0.67235401, 0. , 0.2981656 ], [0.35767577, 0.2981656 , 0. ]]) df = spark.createDataFrame([(np_array.tolist(), )], ("array", )) df.show(truncate=False)
Выход
------------------------------------------------------------------------------------------- |array | ------------------------------------------------------------------------------------------- |[[0.0, 0.67235401, 0.35767577], [0.67235401, 0.0, 0.2981656], [0.35767577, 0.2981656, 0.0]]| -------------------------------------------------------------------------------------------