我想在多维数组中找到沿轴0的最大值的索引。这可以使用python
:https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html
numpy
中完成
在python
:
a = array([[1,2,3],[4,3,1]])
a.argmax(axis=0)
将返回:
array([1, 1, 0])
如何在swift
完成同样的事情?
答案 0 :(得分:0)
尝试同伴代码:
<nav class="navbar navbar-expand-sm navbar-dark bg-dark" id="nav-main">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="nav navbar-nav">
<li class="nav-item">
<a href="#" class="nav-link">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Features</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Pricing</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">About</a>
</li>
</ul>
<form class="form-inline ml-auto">
<input type="text" class="form-control" placeholder="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</nav>
这不是一个严谨的演示 但我认为这可以激励你。
答案 1 :(得分:0)
一个简单的实现,实际上并不是非常安全,因为它基于所有子数组具有相同长度且不为空的前提条件:
extension Array where Element == [Int] {
func axisItems(axis: Int) -> [[Int]] {
// let's suppose all elements have the same length
guard !isEmpty else { return [] }
switch axis {
case 0:
// transpose
return self[0].indices.map { index in self.map { $0[index] } }
case 1:
return self
default:
fatalError("Invalid axis: \(axis)")
}
}
func argMax(axis: Int) -> [Int] {
// add indices to items, find max item and return its index
return axisItems(axis: axis).map { $0.enumerated().max { $0.1 < $1.1 }!.0 }
}
}
let array: [[Int]] = [[1, 2, 3], [4, 3, 1]]
print(array.argMax(axis: 0)) // [1, 1, 0]
print(array.argMax(axis: 1)) // [2, 0]
我正在调换axis = 0
的矩阵。
对于具有更高维度的数组,这不容易扩展。为此,最好使用自定义对象而不是数组。