| Server IP : 217.160.0.212 / Your IP : 216.73.216.141 Web Server : Apache System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/python3/dist-packages/pythran/pythonic/numpy/ |
Upload File : |
#ifndef PYTHONIC_NUMPY_ARGWHERE_HPP
#define PYTHONIC_NUMPY_ARGWHERE_HPP
#include "pythonic/include/numpy/argwhere.hpp"
#include "pythonic/utils/functor.hpp"
#include "pythonic/types/ndarray.hpp"
#include "pythonic/numpy/asarray.hpp"
PYTHONIC_NS_BEGIN
namespace numpy
{
template <class E>
typename types::ndarray<long, types::array<long, 2>> argwhere(E const &expr)
{
constexpr long N = E::value;
auto arr = asarray(expr);
long sz = arr.flat_size();
auto eshape = sutils::getshape(arr);
utils::shared_ref<types::raw_array<long>> buffer(sz *
N); // too much memory used
long *buffer_iter = buffer->data;
long real_sz = 0;
auto iter = arr.fbegin();
for (long i = 0; i < sz; ++i, ++iter) {
if (*iter) {
++real_sz;
long mult = 1;
for (long j = N - 1; j > 0; j--) {
buffer_iter[j] = (i / mult) % eshape[j];
mult *= eshape[j];
}
buffer_iter[0] = i / mult;
buffer_iter += N;
}
}
types::array<long, 2> shape = {real_sz, N};
return {buffer, shape};
}
}
PYTHONIC_NS_END
#endif