小编Iva*_*van的帖子

matplotlib轮廓输入数组顺序

问题:matplotlib的轮廓对输入2D数组的期望是什么顺序?

详细说明:Matplotlib轮廓文档说常规调用是

x_axis = np.linspace(10,100,n_x)
y_axis = np.linspace(10,100,n_y)
matplotlib.pyplot.contour(x_axis, y_axis, scalar_field)
Run Code Online (Sandbox Code Playgroud)

其中scalar_field必须是2D数组.例如,scalar_field可以由.生成

scalar_field = np.array( [(x*y) for x in x_axis for y in y_axis])
scalar_field = scalar_field.reshape(n_x, n_y)
Run Code Online (Sandbox Code Playgroud)

如果scalar_field给出轮廓,

plt.contour(x_axis, y_axis,scalar_field) #incorrect
Run Code Online (Sandbox Code Playgroud)

图的方向不正确(旋转).要恢复正确的方向,必须调换scalar_field:

plt.contour(x_axis, y_axis,scalar_field.transpose()) #correct
Run Code Online (Sandbox Code Playgroud)

那么轮廓期望scalar_field的顺序是什么?

python numpy matplotlib

7
推荐指数
1
解决办法
4749
查看次数

高斯-赛德尔迭代求解器的 Python 库?

是否有一个线性代数库可以实现迭代 Gauss-Seidel 来求解线性系统?或者也许是一个预条件梯度求解器?

谢谢

编辑:最后我使用了一种粗略但正确的方法来解决它。因为无论如何我都必须创建矩阵 A(对于 Ax=b),所以我将矩阵划分为

A = M - N
Run Code Online (Sandbox Code Playgroud)

 M = (D + L) and N = -U
Run Code Online (Sandbox Code Playgroud)

其中 D 是对角线,L 是下三角部分,U 是上三角部分。然后

Pinv = scipy.linalg.inv(M)
x_k_1 = np.dot(Pinv,np.dot(N,x_k)) + np.dot(Pinv,b)
Run Code Online (Sandbox Code Playgroud)

还做了一些收敛测试。有用。

python numpy numeric scipy

6
推荐指数
1
解决办法
2万
查看次数

按时间间隔按 Pyspark 数据帧分组

timestamps我有一个为其生成的数据框:

 from pyspark.sql.functions import avg, first

 rdd = sc.parallelize(
[
    (0, "A", 223,"201603_170302", "PORT"), 
    (0, "A", 22,"201602_100302", "PORT"), 
    (0, "A", 422,"201601_114300", "DOCK"), 
    (1,"B", 3213,"201602_121302", "DOCK")
]
)
 df_data = sqlContext.createDataFrame(rdd, ["id","type", "cost", "date", "ship"])
Run Code Online (Sandbox Code Playgroud)

所以我可以生成一个datetime

 dt_parse = udf(lambda x: datetime.strptime(x,"%Y%m%d_%H%M%S")
 df_data = df_data.withColumn('datetime', dt_parse(df_data.date))
Run Code Online (Sandbox Code Playgroud)

但现在我需要每天按 6 小时的间隔进行分组。每小时大约是

 df_data.groupby(hour(df_data.datetime)).agg(count(ship).alias(ship)).show()
Run Code Online (Sandbox Code Playgroud)

但这对于除小时之外的其他时间间隔不起作用。有办法做到吗?

python pyspark

6
推荐指数
1
解决办法
4046
查看次数

在Debian上编译Python 3.6.2在sharedmods上使用段塞故障

我正在尝试使用选项在Debian Jessie框上编译Python 3.6.2

./configure --prefix="/opt/python3" \
--enable-optimizations \
 --with-lto \
--enable-profiling \
--enable-unicode=ucs4 \
--with-system-expat \
--with-threads \
--with-system-ffi \
'CFLAGS=-D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security ' \
'LDFLAGS=-Wl,-z,relro'
Run Code Online (Sandbox Code Playgroud)

但是我在共享模块的构建上遇到了分段错误:

renaming build/scripts-3.6/pyvenv to build/scripts-3.6/pyvenv-3.6
Segmentation fault
Makefile:586: recipe for target 'sharedmods' failed
make[2]: *** [sharedmods] Error 139
Run Code Online (Sandbox Code Playgroud)

有什么想法发生了什么?

python debian

6
推荐指数
1
解决办法
1094
查看次数

C++:使用数组创建函数

写一个函数有:

input: array of pairs (unique id and weight) length of N, K =< N  
output: K random unique ids (from input array)  
Run Code Online (Sandbox Code Playgroud)

注意:在输出中多次出现某些Id的频率被调用的次数应该越多,它的权重就越大.示例:权重为5的id应出现在输出中比id为1的频率多5倍.此外,分配的内存量应在编译时知道,即不应分配额外的内存.

我的问题是:如何解决这个问题?

编辑
感谢大家的回复!
目前我无法理解对的重量如何影响输出对的出现频率,你能给我更清楚,"虚拟"解释它是如何工作的吗?

c++

5
推荐指数
3
解决办法
1040
查看次数

matplotlib画出来没什么

我正在使用python的matplotlib来使用contour和contourf函数来做一些轮廓.它们在使用show时都可以正常工作,但是当我尝试在方法中使用draw()时,我得到的是matplotlib窗口而不是图形.show()调用将在稍后的代码和不同的方法中完成,我希望在完成draw()时显示一个图形,而不必等到稍后的show().我做错了什么?

谢谢.

python matplotlib

5
推荐指数
2
解决办法
1万
查看次数

绘制pandas数据框架与年度数据

我有一个格式的数据框

              value
2000-01-01    1
2000-03-01    2
2000-06-01    15
2000-09-01    3
2000-12-01    7
2001-01-01    1
2001-03-01    3
2001-06-01    8
2001-09-01    5
2001-12-01    3
2002-01-01    1
2002-03-01    1
2002-06-01    8
2002-09-01    5
2002-12-01    19
Run Code Online (Sandbox Code Playgroud)

(指数是日期时间)我需要逐年绘制所有结果,以比较每3个月的结果(数据也可以是每月),加上所有年份的平均值.

我可以轻松地分别绘制它们,但由于索引,它将根据索引移动绘图:

fig, axes = plt.subplots()
df['2000'].plot(ax=axes, label='2000')
df['2001'].plot(ax=axes, label='2001')
df['2002'].plot(ax=axes, label='2002')
axes.plot(df["2000":'2002'].groupby(df["2000":'2002'].index.month).mean())
Run Code Online (Sandbox Code Playgroud)

所以这不是理想的结果.我在这里似乎有些答案,但你必须连续,创建一个多索引和情节.如果其中一个数据帧具有NaN或缺失值,则可能非常麻烦.有熊猫的方法吗?

python pandas

4
推荐指数
1
解决办法
1万
查看次数

如何禁用 yii2 ActiveFrom dropDownList 中的一项?

Yii2 主动形式

<?= $form->field($model, 'pid')->dropDownList([1=>1,2=>2])->hint('????') ?>
Run Code Online (Sandbox Code Playgroud)

我想禁用选项 2=>2。

有没有办法做到这一点?

yii2

4
推荐指数
1
解决办法
7556
查看次数

从Hive查询中深度复制已过滤的PySpark数据框

我从Hive表中获取一些数据并插入到数据框上:

df = sqlContext.table('mydb.mytable')
Run Code Online (Sandbox Code Playgroud)

我正在过滤一些没有用的值:

df = df[df.myfield != "BADVALUE"]
Run Code Online (Sandbox Code Playgroud)

我想在数据框架上执行此操作,而不是select出于代码设计原因而作为查询。我注意到,即使在过滤数据帧之后,似乎每次以后对df进行操作时,Hive的查询和加载操作都会完成:

df.groupBy('myfield').mean()
Run Code Online (Sandbox Code Playgroud)

这将花费很长时间,就像我没有过滤数据帧一样。有没有办法对其进行深层复制以提高性能并减少内存占用量?

python apache-spark pyspark

4
推荐指数
1
解决办法
4029
查看次数

重命名PySpark Dataframe中的透视和聚合列

具有如下数据框:

from pyspark.sql.functions import avg, first

rdd = sc.parallelize(
    [
        (0, "A", 223,"201603", "PORT"), 
        (0, "A", 22,"201602", "PORT"), 
        (0, "A", 422,"201601", "DOCK"), 
        (1,"B", 3213,"201602", "DOCK"), 
        (1,"B", 3213,"201601", "PORT"), 
        (2,"C", 2321,"201601", "DOCK")
    ]
)
df_data = sqlContext.createDataFrame(rdd, ["id","type", "cost", "date", "ship"])

df_data.show()
Run Code Online (Sandbox Code Playgroud)

我为此做一个重点

df_data.groupby(df_data.id, df_data.type).pivot("date").agg(avg("cost"), first("ship")).show()

+---+----+----------------+--------------------+----------------+--------------------+----------------+--------------------+
| id|type|201601_avg(cost)|201601_first(ship)()|201602_avg(cost)|201602_first(ship)()|201603_avg(cost)|201603_first(ship)()|
+---+----+----------------+--------------------+----------------+--------------------+----------------+--------------------+
|  2|   C|          2321.0|                DOCK|            null|                null|            null|                null|
|  0|   A|           422.0|                DOCK|            22.0|                PORT|           223.0|                PORT|
|  1|   B|          3213.0|                PORT|          3213.0|                DOCK|            null|                null|
+---+----+----------------+--------------------+----------------+--------------------+----------------+--------------------+
Run Code Online (Sandbox Code Playgroud)

但是我为这些列得到了这些非常复杂的名称。alias通常适用于聚合,但是由于 …

python apache-spark apache-spark-sql pyspark

4
推荐指数
3
解决办法
4491
查看次数