我有一个 ndarray
数据类型为的值的数目 numpy.complex128
. 当我尝试使用这些值创建spark df时,得到错误:
UserWarning: createDataFrame attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true; however, failed by the reason below:
Unsupported numpy type 15
Attempting non-optimization as 'spark.sql.execution.arrow.fallback.enabled' is set to true.
TypeError: not supported type: <class 'complex'>
有人遇到过这样的情况吗?我怎么能表示这些复杂的数字,记住我最终需要检索它们?
1条答案
按热度按时间xxls0lw81#
复数只是一对浮点数。如果你有一个numpy数组的形状
(n1, n2, ..., nZ)
和类型complex128
,你可以view
它是一个形状数组(n1, n2, ..., 2 * nZ)
和类型float64
:实部和虚部占据了数组的所有其他元素。您可以验证数据在作为兼容数据类型查看时是否发生更改:
这个操作非常便宜:在相同的数据上创建一个具有不同步长的新数组对象。反序列化时,可以轻松地重新恢复形状数组
(n1, n2, ..., 2 * nZ)
和类型float64
变成某种形状(n1, n2, ..., nZ)
和类型complex128
: