小编ast*_*nlu的帖子

FORTRAN 77程序比Fortran 90程序快吗?

今天我正在阅读FORTRAN 77中编写的一些非常流行的数字库中的代码,例如QUADPACK(最近更新于1987年),我想知道是否有任何理由不在Fortran 90中重写这些库,除了大量工作之外鉴于Fortran 90为语言带来了巨大的改进,包括自由形式的源代码,更好的控制结构,因此可以忘记GO TO,矢量化,接口等等.

是因为FORTRAN 77编译器生成更优化的代码,也许它更适合并行执行?请注意,我甚至没有谈论Fortran 2003,这只有 8年的历史:我在谈论Fortran 90,所以我认为它已经足够广泛并且编译器已经准备好了.无论如何,我没有与业界联系.

编辑:janneb是对的:LAPACK实际上是用Fortran 90编写的.

legacy fortran fortran77 fortran90

7
推荐指数
3
解决办法
4797
查看次数

在额外维度上扩展NumPy数组

在额外维度上扩展给定NumPy数组的最简单方法是什么?

例如,假设我有

>>> np.arange(4)
array([0, 1, 2, 3])
>>> _.shape
(4,)
>>> expand(np.arange(4), 0, 6)
array([[0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3],
       [0, 1, 2, 3]])
>>> _.shape
(6, 4)
Run Code Online (Sandbox Code Playgroud)

或者这个,有点复杂:

>>> np.eye(2)
array([[ 1.,  0.],
       [ 0.,  1.]])
>>> _.shape
(2, 2)
>>> expand(np.eye(2), 0, 3)
array([[[ 1.,  0.],
        [ 0.,  1.]],

       [[ 1.,  0.],
        [ 0.,  1.]],

       [[ 1.,  0.],
        [ 0.,  1.]]])
>>> _.shape …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

是否可以将行追加到现有的 Arrow (PyArrow) 表中?

我知道“许多 Arrow 对象是不可变的:一旦构造,它们的逻辑属性就不能再改变”(文档)。在《绿箭侠》创作者之一的这篇博文中,据说

Arrow C++ 中的表列可以分块,因此附加到表是零复制操作,不需要重要的计算或内存分配。

但是,我无法在文档中找到如何将行追加到表中。pyarrow.concat_tables(tables, promote=False)做了类似的事情,但据我了解,它会生成一个新的 Table 对象,而不是向现有对象添加块。

我不确定这个操作是否完全可能/有意义(在这种情况下我想知道如何进行)或者是否不可行(在这种情况下,pyarrow.concat_tables这正是我所需要的)。

类似问题:

apache-arrow pyarrow

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

如何在Polars中按数据类型选择列?

在 pandas 中,我们有pandas.DataFrame.select_dtypes根据 .pandas 文件选择某些列的方法dtype。在 Polars 中是否有类似的方法来做这样的事情?

dataframe python-polars

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

在Matplotlib中清除轴时保留自动缩放

我要制作一系列绘图(旨在创建动画),因此我想重用轴并在所有绘图中保留x和y限制,因此我设置了ax.autoscale(False)。但是,当我使用plt.cla()清除轴以绘制下一张图像时,自动缩放设置被覆盖,因此我必须设置每次迭代ax.autoscale(False)的x和y限制。

In [49]: fig = plt.figure(1)

In [50]: ax = fig.add_subplot(1, 1, 1)

In [59]: ax.get_autoscale_on()
Out[59]: True

In [60]: ax.autoscale(False)

In [61]: ax.get_autoscale_on()
Out[61]: False

In [62]: plt.cla()

In [63]: ax.get_autoscale_on()
Out[63]: True
Run Code Online (Sandbox Code Playgroud)

因此我最终还是执行ax.lines = []ax.lines.pop(),但这迫使我在每个图上设置颜色以避免颜色循环。如果设置holdFalse,则每次调用时都会重置自动缩放设置ax.plot()。还有什么其他方法可以在删除所有图时保留轴属性?

python plot matplotlib

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

同情多元系列扩展

有没有人知道是否有内置函数同意获得表单的多元系列扩展

f(x,y) = a + b*x + c*y + d*x**2 + e*x*y + f*y**2 + ...
Run Code Online (Sandbox Code Playgroud)

即按所有变量的升序排列?

提前致谢.

python sympy

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

如何发布或分发matplotlib样式表

我想分发一个自定义的matplotlib样式表,但是现在我能想到的唯一方法是将它上传到Gist或其他一些网站并告诉我的用户手动将其下载到某个配置目录.

有没有办法分发样式表,就好像它是一个Python包,或者作为模块的一部分?容易的事pip install mpl_fancy.

python packaging matplotlib

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

python setup.py构建忽略一些文件

我的Python包有以下结构:

$ tree -d | grep -v "__pycache__"
.
??? src
?   ??? poliastro
?   ?   ??? iod
?   ?   ??? tests
?   ?   ??? twobody
?   ?       ??? tests
??? setup.py
??? MANIFEST.in

47 directories
Run Code Online (Sandbox Code Playgroud)

执行python setup.py build完Buf后,最内层test目录不会被复制:

$ tree -d | grep -v "__pycache__"
.
??? build
?   ??? lib
?   ?   ??? poliastro
?   ?       ??? iod
?   ?       ??? tests
?   ?       ??? twobody
Run Code Online (Sandbox Code Playgroud)

相反,python setup.py sdist正常工作.

到目前为止,我已经使用MANIFEST.in规则来包含或排除sdist中的某些文件,模式和目录.有没有办法控制 …

python packaging setuptools

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

在Python中用3D球体绘制圆柱形地图数据

假设我有一个带有行星圆柱图的图像,比如其中一个:

http://www.johnstonsarchive.net/spaceart/cylmaps.html

而且我想将它绘制在3D球体上以恢复原始的行星形象.

有没有办法使用像matplotlib,mayavi,底图或类似的Python包来做到这一点?

python 3d plot matplotlib

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

在Python 3中从CGI输出二进制数据

这个问题关系到这一个.从Python 2中的CGI脚本打印原始二进制数据时,我没有遇到任何问题,例如:

#!/usr/bin/env python2

import os

if __name__ == '__main__':
    with open(os.path.abspath('test.png'), 'rb') as f:
        print "Content-Type: image/png\n"
        print f.read()
Run Code Online (Sandbox Code Playgroud)

以下是相关的响应标头:

> GET /cgi-bin/plot_string2.py HTTP/1.1
> User-Agent: curl/7.32.0
> Host: 0.0.0.0:8888
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 200 Script output follows
< Server: SimpleHTTP/0.6 Python/3.3.2
< Date: Fri, 13 Sep 2013 16:21:25 GMT
< Content-Type: image/png
Run Code Online (Sandbox Code Playgroud)

并且结果被解释为图像,如预期的那样.但是,如果我尝试翻译Python 3:

#!/usr/bin/env python

import os
import sys

if __name__ == '__main__':
    with open(os.path.abspath('test.png'), 'rb') …
Run Code Online (Sandbox Code Playgroud)

python cgi binary-data python-3.x

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

更多pythonic方式迭代Numpy

我是一名工科学生,我习惯于在Fortran中编写代码,但现在我正在尝试使用Numpy为Python编写更多的数据.

如果我需要使用来自多个数组的元素重复执行计算,那么我在Fortran中编写的内容将立即进行翻译

k = np.zeros(N, dtype=np.float)
u = ...
M = ...
r = ...
for i in xrange(N):
  k[i] = ... # Something with u[i], M[i], r[i] and r[i - 1], for example
Run Code Online (Sandbox Code Playgroud)

但我想知道这种方式是否更加pythonic,或以任何方式优先:

for i, (k_i, u_i, M_i, r_i) in enumerate(zip(k, u, M, r)):
  k_i = ... # Something with u_i, M_i, r_i and r[i - 1]
Run Code Online (Sandbox Code Playgroud)

感谢枚举我有索引,否则如果我不需要它我只能使用zip或itertools.izip.

有任何想法吗?代码如何在性能方面受到影响?有没有其他方法可以实现这一目标?

python iterator numpy scientific-computing

3
推荐指数
1
解决办法
851
查看次数

NumPy中的矢量化操作

有没有一种通用的方法来在NumPy中对这些操作进行矢量化?

In [2]: N = 8

In [3]: ll = np.arange(8)

In [4]: arr = np.zeros(ll.shape + (2, 2))

In [5]: ll.shape
Out[5]: (8,)

In [6]: arr.shape
Out[6]: (8, 2, 2)

In [7]: for ii in range(N):
   ...:     arr[ii, :, :] = np.array(...)  # 2 x 2 array function of ll[ii]
Run Code Online (Sandbox Code Playgroud)

如果该函数是对ll的线性运算那么这将是微不足道的,但是在一般情况下有没有办法做到这一点?举个例子:

In [8]: for ii in range(N):
   ...:     arr[ii, :, :] = np.array([
   ...:         [np.cos(ll[ii]) - 1, 0],
   ...:         [np.sin(ll[ii]), np.cos(ll[ii]) ** 2]
   ...:     ])
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization

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

将 Polar 中的值替换为 null

给定一个 Polars DataFrame,有没有办法用“null”替换特定值?例如,如果有一个像这样的哨兵值"_UNKNOWN",我想让它在数据框中真正缺失。

python python-polars

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