那里,
我正在尝试将现有代码调整为boost :: variant.想法是使用boost :: variant作为异构向量.问题是代码的其余部分使用迭代器来访问向量的元素.有没有办法将boost :: variant与迭代器一起使用?
我试过了
typedef boost::variant<Foo, Bar> Variant;
std::vector<Variant> bag;
std::vector<Variant>::iterator it;
for(it= bag.begin(); it != bag.end(); ++it){
cout<<(*it)<<endl;
}
Run Code Online (Sandbox Code Playgroud)
但它没有用.
编辑:谢谢你的帮助!但是在我的设计中,我需要从列表中获取一个元素并将其传递给代码的其他部分(这可能是令人讨厌的,因为我正在使用GSL).使用迭代器的想法是我可以将迭代器传递给函数,该函数将对来自该特定元素的返回数据进行操作.我看不出如何使用for_each做到这一点.我需要做类似的事情:
for(it=list.begin(); it!=list.end();++it) {
for(it_2=list.begin(); it_2!=list.end();++it_2) {
if(it->property() != it_2->property()) {
result = operate(it,it_2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试将 Pandas 数据帧写入分区文件:
df.to_parquet('output.parquet', engine='pyarrow', partition_cols = ['partone', 'partwo'])
TypeError: __cinit__() got an unexpected keyword argument 'partition_cols'
Run Code Online (Sandbox Code Playgroud)
从文档中我预计partition_cols将作为 kwargs 传递给 pyarrow 库。如何使用 Pandas 将分区文件写入本地磁盘?
除了一种方法,我有两个几乎相同的类.这些类具有相同的数据部分和所有成员函数,但只有一个:
class A {
private:
double data;
public:
double calc(){
return data*data;
}
double especific(){
return 2.0*data;
}
}
Run Code Online (Sandbox Code Playgroud)
除了特定方法之外,第二类是相同的.
这个成员函数特别需要计算所有成员数据,因此不能选择传递值或引用.有没有办法在没有大量代码重复的情况下实现它?要么只使用一个类,要么使用模板,而不是继承(巨大的性能影响).
谢谢
编辑:感谢所有的回复.策略模式可以帮助我的情况,我会尝试它,看看它是否有效.基于我在不同程序中进行的一些测试,我正在避免虚拟继承作为瘟疫.这个例程将随处调用,性能是一个非常重要的因素.
我DecisionTreeClassifier使用这样的管道训练了一个模型:
from pyspark.ml import Pipeline
from pyspark.ml.feature import VectorAssembler, StringIndexer
from pyspark.ml.classification import DecisionTreeClassifier
cl = DecisionTreeClassifier(labelCol='target_idx', featuresCol='features')
pipe = Pipeline(stages=[target_index, assembler, cl])
model = pipe.fit(df_train)
# Prediction and model evaluation
predictions = model.transform(df_test)
Run Code Online (Sandbox Code Playgroud)
阶段是StringIndexer和的实例VectorAssembler。我现在可以评估模型的准确性,例如
mc_evaluator = MulticlassClassificationEvaluator(
labelCol="target_idx", predictionCol="prediction", metricName="precision" )
accuracy = mc_evaluator.evaluate(predictions)
print("Test Error = {}".format(1.0 - accuracy))
Run Code Online (Sandbox Code Playgroud)
大。现在,我需要检查树模型的结构。文档将我指向名为的属性toDebugString,但是ML DecisionTreeClassifier没有这个属性-它似乎仅是MLLib DecisionTree分类器的属性。如何从ML版本的管道内部的模型中获取树结构并将其绘制?
我有一个类似于的数据框
from pyspark.sql.functions import avg, first
rdd = sc.parallelize(
[
(0, "A", 223,"201603", "PORT"),
(0, "A", 22,"201602", "PORT"),
(0, "A", 22,"201603", "PORT"),
(0, "C", 22,"201605", "PORT"),
(0, "D", 422,"201601", "DOCK"),
(0, "D", 422,"201602", "DOCK"),
(0, "C", 422,"201602", "DOCK"),
(1,"B", 3213,"201602", "DOCK"),
(1,"A", 3213,"201602", "DOCK"),
(1,"C", 3213,"201602", "PORT"),
(1,"B", 3213,"201601", "PORT"),
(1,"B", 3213,"201611", "PORT"),
(1,"B", 3213,"201604", "PORT"),
(3,"D", 3999,"201601", "PORT"),
(3,"C", 323,"201602", "PORT"),
(3,"C", 323,"201602", "PORT"),
(3,"C", 323,"201605", "DOCK"),
(3,"A", 323,"201602", "DOCK"),
(2,"C", 2321,"201601", "DOCK"),
(2,"A", 2321,"201602", "PORT")
]
)
df_data …Run Code Online (Sandbox Code Playgroud) 我发现了一个有趣的浮点问题.我必须在我的代码中计算几个平方根,表达式如下:
sqrt(1.0 - pow(pos,2))
Run Code Online (Sandbox Code Playgroud)
其中pos在循环中从-1.0到1.0.-1.0对于pow来说很好,但是当pos = 1.0时,我得到了一个-nan.做一些测试,使用gcc 4.4.5和icc 12.0,输出
1.0 - pow(pos,2) = -1.33226763e-15
Run Code Online (Sandbox Code Playgroud)
和
1.0 - pow(1.0,2) = 0
Run Code Online (Sandbox Code Playgroud)
要么
poss = 1.0
1.0 - pow(poss,2) = 0
Run Code Online (Sandbox Code Playgroud)
显而易见,第一个会出现问题,而是消极的.任何人都知道为什么pow返回的数字小于0?完整的违规代码如下:
int main() {
double n_max = 10;
double a = -1.0;
double b = 1.0;
int divisions = int(5 * n_max);
assert (!(b == a));
double interval = b - a;
double delta_theta = interval / divisions;
double delta_thetaover2 = delta_theta / 2.0;
double pos = a;
//for (int i …Run Code Online (Sandbox Code Playgroud) 简单的问题:
Matplotlib 有一个返回两个值的函数:
locs,label = plt.yticks()
Run Code Online (Sandbox Code Playgroud)
Pylint 抱怨这一行,告诉我“使用内置函数映射”。所以我去了 pylint 网站,发现了这个:http ://pylint-messages.wikidot.com/messages:w0141 所以,我正在尝试使用列表理解来修复这个警告。但正确的形式是什么?
[(locs,label) for plt.yticks()]
Run Code Online (Sandbox Code Playgroud)
不管用。
谢谢!
编辑:我做了一个简单的测试脚本来尝试显示问题,问题是下面的一行:
#!/usr/bin/python
""" docstring """
import matplotlib.pyplot as plt
LOCS, LABEL = plt.yticks()
plt.yticks(LOCS, map(lambda x: "%.2f" % x, LOCS)) # offending line
print(LOCS)
Run Code Online (Sandbox Code Playgroud)
呃,我看错了。如何调整这个 lambda 以实现列表理解?谢谢
我在数据透视表上汇总了一些时间序列信息,因此每个数据透视表都有标记为2015,2014等的列.我想比较每个数据透视表,所以我将它们绘制在同一个轴上:
print pv_test_A.columns
Int64Index([2010, 2011, 2012, 2013, 2014, 2015], dtype='int64')
print pv_test_B.columns
Int64Index([2010, 2011, 2012, 2013, 2014, 2015], dtype='int64')
fig, axes = plt.subplots()
pv_test_A.loc[:,[2015]].plot(ax=axes)
pv_test_B.loc[:,[2015]].plot(ax=axes)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每一行在图表上都有相同的标签,2015.我尝试将label参数传递给图表无效.有没有办法重命名标签,而不必诉诸使用plt.legend或注释?
我正在尝试使用 cartopy 绘制几张地图,并且我想离线使用它们。Cartopy 有一个数据目录,
import cartopy.config
cartopy.config
{'data_dir': '/home/user/.local/share/cartopy',
'downloaders': {('shapefiles',
'gshhs'): <cartopy.io.shapereader.GSHHSShpDownloader at 0x7f3ee33ee7d0>,
('shapefiles',
'natural_earth'): <cartopy.io.shapereader.NEShpDownloader at 0x7f3ee33ee710>},
'pre_existing_data_dir': '',
'repo_data_dir': '/home/user/bin/virtualenvs/mobi/local/lib/python2.7/site-packages/cartopy/data'}
Run Code Online (Sandbox Code Playgroud)
所以我相信我可以从Natural Earth网站下载地图。我怎样才能在这个目录上构造这些数据,这样 cartopy 就不会使用互联网来绘图?如何对 OpenStreetMap 数据执行同样的操作?
我正在阅读具有以下架构的镶木地板文件:
df.printSchema()
root
|-- time: integer (nullable = true)
|-- amountRange: integer (nullable = true)
|-- label: integer (nullable = true)
|-- pcaVector: vector (nullable = true)
Run Code Online (Sandbox Code Playgroud)
现在我想测试 Pyspark 结构化流,我想使用相同的镶木地板文件。我能够创建的最接近的模式是使用 ArrayType,但它不起作用:
schema = StructType(
[
StructField('time', IntegerType()),
StructField('amountRange', IntegerType()),
StructField('label', IntegerType()),
StructField('pcaVector', ArrayType(FloatType()))
]
)
df_stream = spark.readStream\
.format("parquet")\
.schema(schema)\
.load("/home/user/test_arch/data/fraud/")
Caused by: java.lang.ClassCastException: Expected instance of group converter but got "org.apache.spark.sql.execution.datasources.parquet.ParquetPrimitiveConverter"
at org.apache.parquet.io.api.Converter.asGroupConverter(Converter.java:37)
at org.apache.spark.sql.execution.datasources.parquet.ParquetRowConverter$RepeatedGroupConverter.<init>(ParquetRowConverter.scala:659)
at org.apache.spark.sql.execution.datasources.parquet.ParquetRowConverter.org$apache$spark$sql$execution$datasources$parquet$ParquetRowConverter$$newConverter(ParquetRowConverter.scala:308)
Run Code Online (Sandbox Code Playgroud)
如何为 Pyspark 中的 StructType 创建一个带有 VectorType 的模式,它似乎只存在于 Scala 中?