未来¶
loading_params = dict(
delimiter="\t", skiprows=1, dtype='U', usecols=0, comments=None
)
biggest_impact = np.loadtxt(
"data/2021/biggestimpact_comments_master.tsv", **loading_params
)
other_changes = np.loadtxt(
"data/2021/significantchanges_comments_master.tsv", **loading_params
)
# Filter
biggest_impact = biggest_impact[biggest_impact != '']
other_changes = other_changes[other_changes != '']
# Re-order
rng = np.random.default_rng(0xDEADC0DE)
rng.shuffle(biggest_impact)
rng.shuffle(other_changes)
# Reporting values
glue(
'2021_num_biggest_impact',
biggest_impact.shape[0],
display=False
)
glue(
'2021_num_other',
other_changes.shape[0],
display=False
)
在问卷调查结束时,我们请参与者分享他们对 NumPy 哪些变化会对其作为用户产生最重大影响的看法。
最大影响¶
我们向调查参与者提出了以下问题
对 NumPy 做出哪一项单一的即时更改会为您作为 NumPy 用户带来最大价值?
回答此问题的 103 名调查参与者的回答如下所示。
gen_mdlist(biggest_impact, "biggest_impacts_list.md")
展开以查看回答!
评论 |
---|
更好的静态类型文档。1.21 版中的系统突然变得更难使用,而且我找不到关于如何使用它的文档。像“np.ndarray 的两个参数是什么”这样的问题很难通过文档来回答。 |
透明地将 NumExpr 与 NumPy 结合使用。 |
如果 NumPy 和 CuPy 合并,并且(希望因此)在 API 上有更多一致性,那就太棒了。RAM 绑定数组和 GPU 绑定数组之间的区别是技术性的,但作为开发人员和数据分析师,我们希望将它们视为等效的。这属于“重大新功能”类别,但您提问了。 |
使 numpy 函数可作为数组类的方法使用。 |
更多教程,展示何时 NumPy 是比使用更复杂(但可能更流行)的框架更好的选择 |
发布数组 API,以便其他库可以开始将其作为标准使用 |
Julia 集成 |
数组上的更多函数 |
文档中更清晰的示例 |
更好地支持分类数组和/或字符串数组! |
我非常赞赏 NumPy 开发社区重新愿意接受更大的变化。赞一个 |
在 f2py 中支持更多现代 Fortran 特性。 |
更多关于如何在给定 2D 平面上操作和访问多维数组(通常是 3D)信息的示例。 |
目前没有什么紧迫的,以前用于统计和栅格分析的滑动数组视图是一个关键点 |
随处可见的文档字符串 |
更快的导入速度 |
如何高效处理数组 |
与 TensorFlow 和 PyTorch 等现有库有更好的兼容性。它们提供了类似 NumPy 的接口,这看起来很傻。 |
对我来说,一份更好的文档,当然是西班牙语的。也就是说,更及时的更新。(评论以西班牙语提交。) |
新的构建系统。 |
减小包的大小 |
OpenBLAS 优化 |
性能非常好 |
文档的深色模式,或者将代码块背景从 #fafafa 改回 #f5f5f5,因为它有助于阅读代码。 |
https://numpy.com.cn/doc/stable/reference/arrays.nditer.html#single-array-iteration” |
更独立于 CPython。例如,使用 HPy 作为接口。 |
numba 与 numpy 更好地兼容,但这更可能是 numba 的问题 |
我主要使用 |
类似于 jax 中的 vmap 功能 |
扩展适用于图像处理的函数。(评论以日语提交。) |
文档中更多使用案例。 |
自动微分 |
使其更容易下载和安装。(评论以西班牙语提交。) |
生成 NumPy 管道的低依赖编译二进制文件,以便包含在原生库中 |
稀疏矩阵支持! |
小数组性能 |
修复掩码数组并改进“鸭子数组”支持(尽管这更多可能需要向下游推进)。 |
提升速度。(评论以中文提交。) |
更多 NumPy C API 文档和总体上更好的文档。 |
减轻与日期时间相关的麻烦。 |
OpenBlas 版本的更高性能。(评论以西班牙语提交。) |
目前我正在研究直方图函数。 |
性能 |
一个更详细的广播版本。学生们很难掌握其底层规则。 |
引入惰性求值。 |
对缺失数据的良好支持。或者稀疏数组(不是 scipy 矩阵) |
更好地支持 AMD 处理器 |
消除“import numpy as np” |
与多精度数值包(例如基于 GMP 或 MPFR 的 mpmath)更好地集成 |
一个非常快速的线性矩阵问题求解器(目前在 np.linalg.solve 中),因为我的包依赖于运行该函数数万次来解决一个更大的数学问题。 |
改进的类型化 |
我认为一个展示 NumPy 用例的博客会很好。例如,https://matplotlib.net.cn/matplotblog |
在 GPU 上运行更快。 |
GPU,多核特性。 |
增加在 GPU 上运行操作的支持 |
带物理单位的数组和计算。 |
此外,OpenBLAS 的文档(以及它与其他 BLAS 变体的区别)及其对并行性的支持几乎不存在,在生产中使用起来也很困难。” |
更好的文档/SEO,NumPy 论坛。 |
更有效地找到问题答案或所需信息的方法。 |
包含小型项目的新教程。 |
numpy 中更多的统计功能。numpy.kurtosis 会很棒(它具有 numpy 的速度,并且能够处理 Ndarrays,就像 numpy.var 一样) |
添加带有对数和指数技巧的矩阵乘法(我经常处理概率) |
更好的调试工具 |
1. 最大限度地简化接口(调用子例程) |
哈哈哈,原生 CUDA 支持 :) |
更快的“map” |
原生 GPU 选项。 |
更好的错误消息 |
如果 NumPy 有助于改进 CPython C-API。为了提高 Python 的整体性能,CPython 核心开发人员可能需要对 C-API 进行破坏性更改,但如果这会破坏 NumPy 和 PyData 堆栈,他们就不敢这样做。由于 NumPy 是如此基础,它需要参与其中才能成功。 |
文档中的许多示例 |
提供更多示例的文档,以便更好地理解使用某些功能的上下文。(评论以西班牙语提交。) |
改进 NumPy 背后的统计功能(例如 numpy quantile)。 |
引入用户友好的时间序列数据操作,类似于 stride_tricks 但更直观且有更好的文档。 |
2. 为结构化稀疏系统(如块稀疏)添加直接稀疏求解器” |
使用 JIT 提高性能。由于 NumPy 非常流行,在 NumPy 内部内置 JIT 编译器将使使用 NumPy 编写小型类 C 片段变得非常强大。 |
为变量、数组和计算添加单位。 |
我想要类似于 Jax 库中的 fori_loop 函数。 |
长期稳定性。Python 生态系统中的许多人痴迷于新的闪亮事物,而不是能够长期稳定运行的健壮工具。我很想知道我用 Python 3.4 编写的代码现在是否仍然有效,但设置起来可能会异常困难。 |
无论如何,NumPy 做得非常出色,很高兴能掌握这个工具!” |
更多的 SIMD 可能是最容易实现的。这和完整的类型支持。 |
加速 |
实现物理单位。 |
更多特殊函数 |
到处使用 Markdown(例如,文档和文档字符串),而不是 reStructuredText。 |
更好的 einsum 文档 |
可能是快速矩阵重复乘积(即对于矩阵 a-z,y = a@b@c@…@z)。这有点专业化,但我几乎每天都在研究中使用它。 |
更多与 TensorFlow 的集成 |
更多用于掩码数组的函数,以及/或者在不专门针对掩码数组的函数中处理掩码数组。例如,与其使用 np.ma.sum,不如在 np.sum(…, masked_values = True, masked_value_handling=’ignore’) 中提供一个选项,或者类似这样的功能,那就太好了。 |
可定制的数据类型 (dtypes) |
改进随机模块的便利性。(评论以日语提交。) |
可扩展的用户数据类型 (dtypes) |
API 页面旁边的示例。 |
文档应该更详细。 |
多输出的 Einsum |
更多关注文档。提供更多“快速入门”和“操作指南”。确保文档中的所有代码都可以从网站上轻松下载(复制/粘贴)。 |
一个成熟、完整的稀疏数组解决方案。我最初使用 SciPy,但 numpy.matrix 的废弃造成了破坏性影响,因为我的代码依赖于矩阵的一个怪癖,而这在数组中不起作用。我目前正在使用 sparse,但它尚未成熟,最近的更改也破坏了代码,而且一些 numpy 示例与稀疏等价物不兼容。 |
为非研究人员提供更好的文档。作为一名软件工程师/架构师,我需要了解内存如何分配、何时复制内存(vstack、view)、给定算法的圈复杂度是多少以及如何实现并行处理(pThreads)。这在整个 ML 堆栈中大多缺失,我经常不得不阅读源代码来猜测。 |
速度 |
文档中更多示例 |
允许“for x in a:”而不是“for x in np.nditer(a):” |
能够检测特殊结构(三角、带状、Hessenberg 等)并使用适当求解器的 numpy.linalg.solve。 |
并行化。 |
任何可以增加的性能提升都会对下游项目产生巨大影响。 |
其他重大改变¶
最后,我们请参与者分享任何其他能显著改进 NumPy 的变化。回答此问题的 56 名参与者的回答如下所示。
gen_mdlist(other_changes, "other_changes_list.md")
展开以查看回答!
评论 |
---|
更少的数值误差;linalg 包中更多类似 rref 的计算。 |
为新贡献者提供更清晰的渠道 |
类型提示 |
为西班牙语受众提供更多内容。(评论以西班牙语提交。) |
修复不直观的函数。(评论以日语提交。) |
允许整数数组中存在 NaNs。 |
与提供类似 numpy API 的 GPU 库更好地互操作。 |
一流的稀疏性支持 |
CUDA 和其他 GPU 支持 |
引入凸优化求解器。 |
更多关于保存/加载结构化/记录数组(即,带 Pandas 冗余的 Pandas)数组数据的文档 |
招聘更多领域更广的开源实习生。 |
一个 NumPy 讨论区来帮助提问。 |
f2py 应该拆分成单独的包。 |
或许一些自动 GPU 支持会很好。 |
使 numpy 函数可作为数组类的方法使用。 |
不要陷入那个陷阱:NumPy 实际上令人愉悦地稳定。 |
更好地支持现代 Fortran 的 f2py |
不规则数组 |
谨慎考虑弃用的影响,以及应用程序可能对已弃用版本产生的依赖。 |
JAX 和 SciPy 集成 |
文档翻译以触及更多人。(评论以西班牙语提交。) |
命名空间合理性。主命名空间过于拥挤。 |
总的来说,我觉得它很棒。没有它我就无法完成我的工作。目前的示例很棒,但有时我发现它们在解释代码*实际*在做什么方面有点过于简短。 |
增加对简单、高质量图表的支持,这样我们就可以避免 Matplotlib 的噩梦。 |
更多协调,以实现其他数组库可以定位的统一 NumPy API。 |
算法微分。 |
也许您的一些函数应该由其领域的专家根据参数、文档和结果进行评估。这些经验可以在网站上记录。 |
与 Matlab 进行基准测试 |
将稀疏数组包含到 numpy 中,并提供更复杂的稀疏功能(更健壮的求解器) |
我希望看到一些活动,我们邀请开源研究人员将其论文实现在 NumPy 核心中,就像一场比拼谁拥有最快 FFT 的比赛一样 |
循环会很酷……即使它是一个向量库 |
某种跟踪内存使用情况的方法。 |
将 NumPy/Numba/CuPy/Xarray 集成/整合到一个统一框架中,用于 CPU 和 GPU 的 JIT 编译 |
设备放置 |
带类型支持的 f2py |
继续执行类似移除金融函数的操作。 |
转向仅使用受限的 Python C-API |
与 PEP 484 和 PEP 526 更好的兼容性。 |
更清晰/更快的 API(作为函数有意义的东西不应该用*慢速*类来实现) |
更多地关注使用类型提示。 |
多进程 |
稀疏矩阵支持! |
抱歉,对于非标准数组和尽可能透明地使用多核。 |
使用更多运算符,更短的语法 |
对低秩数组(特别是 0、标量和 1、向量)进行适当/统一处理;更像 APL / J。 |
多目标优化、熵方法、神经网络、图论、决策树等功能。(评论以中文提交。) |
轰鸣轰鸣,让它更快🏎🏎 |
更多维护者(即资金)——在没有信心有人会审查我的补丁(由于项目的志愿性质)的情况下,很难为库做出贡献 |
更好的构建系统,以及一些关于如何使用它的文档(特别是用于构建 FORTRAN 扩展)。 |
难以判断。这确实是最好的代码之一。 |
内置 GPU 支持,意味着当 GPU 速度更快时,NumPy 会自动使用 GPU 而非 CPU,无需用户干预。 |
并行性 |
如果能从 Fortran 调用 Python 就好了!我写一个子程序,比如用 Docker 风格打包它,然后从 Fortran 调用它。 |
我觉得 HPy 的东西非常酷,但我还没用到它。 |
也许 Jupiter notebook 的某些插件能帮助我。 |