python - 如何将 spark rdd 转换为 numpy 数组?
问题描述
我已经使用 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 数组。
解决方案
collect
在调用之前,您必须将数据传输到本地计算机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])]
推荐阅读
- kotlin - 如何在轻松模式下模拟对象?
- vba - 格式化使用选择创建的标题。插入标题(Word VBA)
- r - 如何使用列中的非数值减去数据框中的数值列
- javascript - 使用 javascript 在多个页面中保持用户详细信息子集的安全
- excel - 如何进一步抓取网站?
- c++ - 如何将向量一的所有元素与向量二进行比较,如果存在最大元素,则将向量二的所有元素与向量三进行比较?
- excel - Lookup using multiple columns and values
- r - How can i check normality of some values in column with some confidence level in R
- encoding - 将 html 流从 c# webbrowser 加载到 htmlagilitypack 时编码错误
- ansible - Ansible 库存分组