当前位置: 首页 > 面试题库 >

在python中访问第n维

章青青
2023-03-14
问题内容

我希望对多维numpy数组的某些部分易于阅读。对于任何数组,访问第一维都是容易的(b[index])。另一方面,访问第六维是“困难的”(尤其是阅读)。

b[:,:,:,:,:,index] #the next person to read the code will have to count the :

有一个更好的方法吗?特别是有没有一种方法,在编写程序时不知道轴?

编辑:索引维不一定是最后一个维


问题答案:

如果您想要一个视图并且想要快速查看,您可以手动创建索引:

arr[(slice(None), )*5 + (your_index, )]
#                   ^---- This is equivalent to 5 colons: `:, :, :, :, :`

np.take比使用:s索引快得多,并且仅慢一点:

import numpy as np

arr = np.random.random((10, 10, 10, 10, 10, 10, 10))

np.testing.assert_array_equal(arr[:,:,:,:,:,4], arr.take(4, axis=5))
np.testing.assert_array_equal(arr[:,:,:,:,:,4], arr[(slice(None), )*5 + (4, )])
%timeit arr.take(4, axis=5)
# 18.6 ms ± 249 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit arr[(slice(None), )*5 + (4, )]
# 2.72 µs ± 39.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit arr[:, :, :, :, :, 4]
# 2.29 µs ± 107 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

但是可能不那么可读,因此,如果经常需要,您可能应该将其放在具有有意义名称的函数中:

def index_axis(arr, index, axis):
    return arr[(slice(None), )*axis + (index, )]

np.testing.assert_array_equal(arr[:,:,:,:,:,4], index_axis(arr, 4, axis=5))

%timeit index_axis(arr, 4, axis=5)
# 3.79 µs ± 127 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)


 类似资料:
  • 问题内容: 我有一个表格,我需要在其中获取每个类别的前n个最高金额的项目。 我期望的输出是前2个类别中的最高清单。 问题答案: 这应该为您工作。如果它不满足您的要求,请发回您需要的内容。您最初希望有25个,所以您只需将最后一个子句修改为 如果要从表中选择更多列,只需将它们添加到和“ GROUP BY”子句中。 仅当您要扩展“ 每个Category,foo,bar的TOP n ”时,才将这些列也添加

  • 问题内容: 有没有一种语法更简洁的方式编写以下内容? 生成器应该具有一个表达式,该表达式充当列表,但在功能上与上述代码相同,这似乎是很自然的。 问题答案: 一种方法是使用

  • 问题内容: 我正在运行Mac OS X环境,习惯于使用〜/提供对当前用户目录的访问。 例如,在我的python脚本中,我只是尝试使用 但是想用 尝试运行此文件或目录时出现错误消息。有任何想法吗? 问题答案: 您需要使用 正在当前工作目录中寻找名为“〜”的目录。 还请注意该函数的文档-特别是,您需要正确设置环境变量以确保进行扩展。在大多数情况下,这不会成为问题,但是如果不进行扩展,那可能就是原因。

  • 问题内容: 我想从python中的N位数字中提取第n位数字。例如: 我如何在python中做类似的事情?我应该先将其更改为字符串,然后再将其更改为int以进行计算吗? 问题答案: 首先将数字视为字符串 然后获得第一个数字: 第四位数: 编辑: 这将返回数字作为字符,而不是数字。转换回使用:

  • 问题内容: 如何访问我的IP摄像机流? 用于显示标准网络摄像头流的代码是 除了IP摄像机,我该如何做同样的事情? 我的系统: Python 2.7.14 OpenCV 2.4.9 Teledyne Dalsa Genie Nano XL相机 帮助将不胜感激 您可以将视频捕获对象用作 问题答案: 我回答了我自己的问题,报告了什么似乎是Python OpenCV中访问IP摄像机的 最全面的 总体过程。

  • 我试图从sciencedirect网站上搜索数据。我试图通过创建一个xpaths列表并循环这些xpaths来一个接一个地访问journal issues,从而自动化刮痧过程。当im运行该循环时,im在访问第一个日记之后无法访问其余的元素。这个过程对我在另一个网站工作,但不是在这个。 我还想知道除了这个过程之外,还有什么更好的方法来访问这些元素。