NumCpp  2.12.1
A Templatized Header Only C++ Implementation of the Python NumPy Library
asarray.hpp
Go to the documentation of this file.
1
28#pragma once
29
30#include <array>
31#include <deque>
32#include <forward_list>
33#include <initializer_list>
34#include <iterator>
35#include <list>
36#include <set>
37#include <type_traits>
38#include <vector>
39
40#include "NumCpp/Core/Enums.hpp"
42#include "NumCpp/NdArray.hpp"
43
44namespace nc
45{
46 //============================================================================
47 // Method Description:
56 template<typename dtype, std::enable_if_t<is_valid_dtype_v<dtype>, int> = 0>
57 NdArray<dtype> asarray(std::initializer_list<dtype> inList)
58 {
59 return NdArray<dtype>(inList);
60 }
61
62 //============================================================================
63 // Method Description:
72 template<typename dtype>
73 NdArray<dtype> asarray(std::initializer_list<std::initializer_list<dtype>> inList)
74 {
75 return NdArray<dtype>(inList);
76 }
77
78 //============================================================================
79 // Method Description:
89 template<typename dtype, size_t ArraySize, std::enable_if_t<is_valid_dtype_v<dtype>, int> = 0>
90 NdArray<dtype> asarray(std::array<dtype, ArraySize>& inArray, PointerPolicy pointerPolicy = PointerPolicy::COPY)
91 {
92 return NdArray<dtype>(inArray, pointerPolicy);
93 }
94
95 //============================================================================
96 // Method Description:
106 template<typename dtype, size_t Dim0Size, size_t Dim1Size>
107 NdArray<dtype> asarray(std::array<std::array<dtype, Dim1Size>, Dim0Size>& inArray,
108 PointerPolicy pointerPolicy = PointerPolicy::COPY)
109 {
110 return NdArray<dtype>(inArray, pointerPolicy);
111 }
112
113 //============================================================================
114 // Method Description:
124 template<typename dtype, std::enable_if_t<is_valid_dtype_v<dtype>, int> = 0>
125 NdArray<dtype> asarray(std::vector<dtype>& inVector, PointerPolicy pointerPolicy = PointerPolicy::COPY)
126 {
127 return NdArray<dtype>(inVector, pointerPolicy);
128 }
129
130 //============================================================================
131 // Method Description:
139 template<typename dtype>
140 NdArray<dtype> asarray(const std::vector<std::vector<dtype>>& inVector)
141 {
142 return NdArray<dtype>(inVector);
143 }
144
145 //============================================================================
146 // Method Description:
156 template<typename dtype, size_t Dim1Size>
157 NdArray<dtype> asarray(std::vector<std::array<dtype, Dim1Size>>& inVector,
158 PointerPolicy pointerPolicy = PointerPolicy::COPY)
159 {
160 return NdArray<dtype>(inVector, pointerPolicy);
161 }
162
163 //============================================================================
164 // Method Description:
172 template<typename dtype, std::enable_if_t<is_valid_dtype_v<dtype>, int> = 0>
173 NdArray<dtype> asarray(const std::deque<dtype>& inDeque)
174 {
175 return NdArray<dtype>(inDeque);
176 }
177
178 //============================================================================
179 // Method Description:
187 template<typename dtype>
188 NdArray<dtype> asarray(const std::deque<std::deque<dtype>>& inDeque)
189 {
190 return NdArray<dtype>(inDeque);
191 }
192
193 //============================================================================
194 // Method Description:
202 template<typename dtype, typename dtypeComp>
203 NdArray<dtype> asarray(const std::set<dtype, dtypeComp>& inSet)
204 {
205 return NdArray<dtype>(inSet);
206 }
207
208 //============================================================================
209 // Method Description:
217 template<typename dtype>
218 NdArray<dtype> asarray(const std::list<dtype>& inList)
219 {
220 return NdArray<dtype>(inList);
221 }
222
223 //============================================================================
224 // Method Description:
233 template<typename Iterator>
234 auto asarray(Iterator iterBegin, Iterator iterEnd)
235 {
237 }
238
239 //============================================================================
240 // Method Description:
249 template<typename dtype>
250 NdArray<dtype> asarray(const dtype* iterBegin, const dtype* iterEnd)
251 {
252 return NdArray<dtype>(iterBegin, iterEnd);
253 }
254
255 //============================================================================
256 // Method Description:
265 template<typename dtype>
267 {
268 return NdArray<dtype>(ptr, size);
269 }
270
271 //============================================================================
272 // Method Description:
282 template<typename dtype>
283 NdArray<dtype> asarray(const dtype* ptr, uint32 numRows, uint32 numCols)
284 {
285 return NdArray<dtype>(ptr, numRows, numCols);
286 }
287
288 //============================================================================
289 // Method Description:
300 template<typename dtype,
301 typename UIntType,
302 std::enable_if_t<std::is_integral_v<UIntType> && !std::is_same_v<UIntType, bool>, int> = 0>
303 NdArray<dtype> asarray(dtype* ptr, UIntType size, PointerPolicy pointerPolicy = PointerPolicy::COPY) noexcept
304 {
305 return NdArray<dtype>(ptr, size, pointerPolicy);
306 }
307
308 //============================================================================
309 // Method Description:
321 template<typename dtype,
322 typename UIntType1,
323 typename UIntType2,
324 std::enable_if_t<std::is_integral_v<UIntType1> && !std::is_same_v<UIntType1, bool>, int> = 0,
325 std::enable_if_t<std::is_integral_v<UIntType2> && !std::is_same_v<UIntType2, bool>, int> = 0>
327 UIntType1 numRows,
328 UIntType2 numCols,
329 PointerPolicy pointerPolicy = PointerPolicy::COPY) noexcept
330 {
331 return NdArray<dtype>(ptr, numRows, numCols, pointerPolicy);
332 }
333} // namespace nc
Holds 1D and 2D arrays, the main work horse of the NumCpp library.
Definition: NdArrayCore.hpp:139
Definition: Cartesian.hpp:40
uint32 size(const NdArray< dtype > &inArray) noexcept
Definition: size.hpp:43
NdArray< dtype > asarray(std::initializer_list< dtype > inList)
Definition: asarray.hpp:57
PointerPolicy
Policy for NdArray constructor that takes in a pointer to data.
Definition: Enums.hpp:56
std::uint32_t uint32
Definition: Types.hpp:40