NumCpp  2.4.0
A Templatized Header Only C++ Implementation of the Python NumPy Library
flip.hpp
Go to the documentation of this file.
1 #pragma once
29 
31 #include "NumCpp/Core/Types.hpp"
32 #include "NumCpp/NdArray.hpp"
33 
34 namespace nc
35 {
36  //============================================================================
37  // Method Description:
47  template<typename dtype>
48  NdArray<dtype> flip(const NdArray<dtype>& inArray, Axis inAxis = Axis::NONE)
49  {
50  switch (inAxis)
51  {
52  case Axis::NONE:
53  {
54  NdArray<dtype> returnArray(inArray);
55  stl_algorithms::reverse(returnArray.begin(), returnArray.end());
56  return returnArray;
57  }
58  case Axis::COL:
59  {
60  NdArray<dtype> returnArray(inArray);
61  for (uint32 row = 0; row < inArray.shape().rows; ++row)
62  {
63  stl_algorithms::reverse(returnArray.begin(row), returnArray.end(row));
64  }
65  return returnArray;
66  }
67  case Axis::ROW:
68  {
69  NdArray<dtype> returnArray = inArray.transpose();
70  for (uint32 row = 0; row < returnArray.shape().rows; ++row)
71  {
72  stl_algorithms::reverse(returnArray.begin(row), returnArray.end(row));
73  }
74  return returnArray.transpose();
75  }
76  default:
77  {
78  THROW_INVALID_ARGUMENT_ERROR("Unimplemented axis type.");
79  return {}; // get rid of compiler warning
80  }
81  }
82  }
83 } // namespace nc
nc::NdArray::shape
Shape shape() const noexcept
Definition: NdArrayCore.hpp:4356
nc::Axis::NONE
@ NONE
nc::Axis::ROW
@ ROW
nc::NdArray::transpose
NdArray< dtype > transpose() const
Definition: NdArrayCore.hpp:4652
nc::NdArray< dtype >
nc::uint32
std::uint32_t uint32
Definition: Types.hpp:40
NdArray.hpp
nc::NdArray::end
iterator end() noexcept
Definition: NdArrayCore.hpp:1431
nc::stl_algorithms::reverse
void reverse(BidirIt first, BidirIt last) noexcept
Definition: StlAlgorithms.hpp:453
nc::Axis
Axis
Enum To describe an axis.
Definition: Types.hpp:46
nc::flip
NdArray< dtype > flip(const NdArray< dtype > &inArray, Axis inAxis=Axis::NONE)
Definition: flip.hpp:48
nc
Definition: Coordinate.hpp:44
THROW_INVALID_ARGUMENT_ERROR
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition: Error.hpp:36
StlAlgorithms.hpp
Types.hpp
nc::NdArray::begin
iterator begin() noexcept
Definition: NdArrayCore.hpp:1087
nc::Axis::COL
@ COL