我已经使用spark上下文读取了textFile,测试文件是一个csv文件。下面的 testRdd 是与我的 rdd 类似的格式。
testRdd = [[1.0,2.0,3.0,4.0,5.0,6.0,7.0],
[0.0,0.1,0.3,0.4,0.5,0.6,0.7],[1.1,1.2,1.3,1.4,1.5,1.6,1.7]]
我想将上面的 rdd 转换为 numpy 数组,这样我就可以将 numpy 数组输入到我的机器学习模型中。
当我尝试以下操作时
feature_vector = numpy.array(testRDD).astype(numpy.float32)
它给了我以下类型错误:
TypeError: float() argument must be a string or a number
我应该如何将spark rdd转换为numpy数组。
最佳答案
在调用 numpy.array
之前,您必须将数据收集
到本地计算机:
import numpy as np
a = np.array(testRdd.collect())
print(a)
#array([[ 1. , 2. , 3. , 4. , 5. , 6. , 7. ],
# [ 0. , 0.1, 0.3, 0.4, 0.5, 0.6, 0.7],
# [ 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7]])
或者,如果您希望每一行作为单独的数组:
b = testRdd.map(np.array).collect()
print(b)
#[array([ 1., 2., 3., 4., 5., 6., 7.]),
# array([ 0. , 0.1, 0.3, 0.4, 0.5, 0.6, 0.7]),
# array([ 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7])]
关于python - 如何将spark rdd转换为numpy数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190994/