NumCpp  2.13.0
A Templatized Header Only C++ Implementation of the Python NumPy Library
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
extract.hpp
Go to the documentation of this file.
1
28#pragma once
29
30#include <vector>
31
33#include "NumCpp/NdArray.hpp"
34
35namespace nc
36{
37 //============================================================================
38 // Method Description:
47 template<typename dtype>
49 {
50 if (condition.size() != arr.size())
51 {
52 THROW_INVALID_ARGUMENT_ERROR("Input arguments 'condition' and 'arr' must have the same size.");
53 }
54
55 std::vector<dtype> values;
56 for (decltype(arr.size()) i = 0; i < arr.size(); ++i)
57 {
58 if (condition[i])
59 {
60 values.push_back(arr[i]);
61 }
62 }
63
64 return NdArray<dtype>(values.begin(), values.end());
65 }
66} // namespace nc
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition Error.hpp:37
Holds 1D and 2D arrays, the main work horse of the NumCpp library.
Definition NdArrayCore.hpp:139
Definition Cartesian.hpp:40
NdArray< dtype > arange(dtype inStart, dtype inStop, dtype inStep=1)
Definition arange.hpp:59
NdArray< dtype > extract(const NdArray< bool > &condition, const NdArray< dtype > &arr)
Definition extract.hpp:48