arrays - Julia:沿特定轴获取多维数组的范围(最小值/最大值)
问题描述
给定一些尺寸为N1
, N2
,的数组N3
,Julia 中是否有任何方法可以为给定轴的不同级别获取此多维数组的最小值和最大值(范围)?
例如,假设我们有一个my_array
具有大小的数组(10, 3, 100)
(意思是N1 = 10
, N2 = 3
,N3 = 100
以与上面使用的术语保持一致)。我想获得三个不同“级别”的最小值和最大值N2
。基本上,我想要一些更简洁的代码来执行以下操作:
N2_1_range = (minimum(my_array[:,1,:]), maximum(my_array[:,1,:])
N2_2_range = (minimum(my_array[:,2,:]), maximum(my_array[:,2,:])
N2_3_range = (minimum(my_array[:,3,:]), maximum(my_array[:,3,:])
所以基本上,对于所需维度(在本例中为维度)my_array[:,n,:]
的每个级别,您将获得整个 n 维子数组的最小值(分别为最大值),该子数组由索引操作(如 , )挑选出来。n
N2
我想要(更好的)代码,将这个操作推广到任何N
多维数组的任何所需维度,基本上存储该维度的不同“设置/级别”的范围。
解决方案
您想要extrema(my_array, dims = 1)
(或 2 或 3),请参阅extrema
.
然后,您可以使用mapslices
在调用中指定应该有冒号的维度:
julia> a = rand(1:10, 10, 3, 100);
julia> mapslices(extrema, a, dims = [1, 3])
1×3×1 Array{Tuple{Int64,Int64},3}:
[:, :, 1] =
(1, 10) (1, 10) (1, 10)
请注意,目前存在一个未解决的问题,即性能extrema
比调用minimum
和更差maximum
here,因此您可能需要检查这是否会导致性能问题。
推荐阅读
- excel - 在 Excel 上,我如何判断依赖项所在的其他工作表?
- android - Dart 中的 Kotlin `apply()` 方法模拟
- python - “执行” f 字符串的内部函数的名称是什么?
- javascript - 为什么我的组件在从 API 获取数据后会挂载两次?
- excel - 双引号 VBA
- sql - ORACLE SQL - REGEXP_LIKE 包含第一个字符作为数字和第二个字符作为字母
- javascript - 当我在heroku中部署我的应用程序时获取html时出错
- r - R knitr:在标题中强制换行
- reactjs - 无法访问使用 Redux Toolkit 创建的 ActionCreator 的 action.payload
- arrays - 我正在寻找一种更快的方法来遍历超过 150,000 行