今天我正在阅读FORTRAN 77中编写的一些非常流行的数字库中的代码,例如QUADPACK(最近更新于1987年),我想知道是否有任何理由不在Fortran 90中重写这些库,除了大量工作之外鉴于Fortran 90为语言带来了巨大的改进,包括自由形式的源代码,更好的控制结构,因此可以忘记GO TO,矢量化,接口等等.
是因为FORTRAN 77编译器生成更优化的代码,也许它更适合并行执行?请注意,我甚至没有谈论Fortran 2003,这只有 8年的历史:我在谈论Fortran 90,所以我认为它已经足够广泛并且编译器已经准备好了.无论如何,我没有与业界联系.
编辑:janneb是对的:LAPACK实际上是用Fortran 90编写的.
在额外维度上扩展给定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) 我知道“许多 Arrow 对象是不可变的:一旦构造,它们的逻辑属性就不能再改变”(文档)。在《绿箭侠》创作者之一的这篇博文中,据说
Arrow C++ 中的表列可以分块,因此附加到表是零复制操作,不需要重要的计算或内存分配。
但是,我无法在文档中找到如何将行追加到表中。pyarrow.concat_tables(tables, promote=False)做了类似的事情,但据我了解,它会生成一个新的 Table 对象,而不是向现有对象添加块。
我不确定这个操作是否完全可能/有意义(在这种情况下我想知道如何进行)或者是否不可行(在这种情况下,pyarrow.concat_tables这正是我所需要的)。
类似问题:
Table物体。可能来自read_csv操作或手动构建。在 pandas 中,我们有pandas.DataFrame.select_dtypes根据 .pandas 文件选择某些列的方法dtype。在 Polars 中是否有类似的方法来做这样的事情?
我要制作一系列绘图(旨在创建动画),因此我想重用轴并在所有绘图中保留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(),但这迫使我在每个图上设置颜色以避免颜色循环。如果设置hold为False,则每次调用时都会重置自动缩放设置ax.plot()。还有什么其他方法可以在删除所有图时保留轴属性?
有没有人知道是否有内置函数同意获得表单的多元系列扩展
f(x,y) = a + b*x + c*y + d*x**2 + e*x*y + f*y**2 + ...
Run Code Online (Sandbox Code Playgroud)
即按所有变量的升序排列?
提前致谢.
我想分发一个自定义的matplotlib样式表,但是现在我能想到的唯一方法是将它上传到Gist或其他一些网站并告诉我的用户手动将其下载到某个配置目录.
有没有办法分发样式表,就好像它是一个Python包,或者作为模块的一部分?容易的事pip install mpl_fancy.
我的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中的某些文件,模式和目录.有没有办法控制 …
假设我有一个带有行星圆柱图的图像,比如其中一个:
http://www.johnstonsarchive.net/spaceart/cylmaps.html
而且我想将它绘制在3D球体上以恢复原始的行星形象.
有没有办法使用像matplotlib,mayavi,底图或类似的Python包来做到这一点?
这个问题关系到这一个.从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) 我是一名工科学生,我习惯于在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.
有任何想法吗?代码如何在性能方面受到影响?有没有其他方法可以实现这一目标?
有没有一种通用的方法来在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) 给定一个 Polars DataFrame,有没有办法用“null”替换特定值?例如,如果有一个像这样的哨兵值"_UNKNOWN",我想让它在数据框中真正缺失。
python ×10
matplotlib ×3
numpy ×3
packaging ×2
plot ×2
3d ×1
apache-arrow ×1
binary-data ×1
cgi ×1
dataframe ×1
fortran ×1
fortran77 ×1
fortran90 ×1
iterator ×1
legacy ×1
pyarrow ×1
python-3.x ×1
setuptools ×1
sympy ×1