std::vector<std::valarray<T>>
const&A) {
36 for(
const auto&a : A) {
37 for(
const auto&x : a) {
38std::cout << x <<
' ';
40std::cout << std::endl;
52std::ostream &
operator<<(std::ostream &out,
conststd::pair<T, T> &A) {
56std::cout <<
"("<< A.first <<
", "<< A.second <<
")";
67std::ostream &
operator<<(std::ostream &out,
conststd::valarray<T> &A) {
70 for(
const auto&a : A) {
71std::cout << a <<
' ';
73std::cout << std::endl;
87B.resize(A.size() + 1);
88 for(
size_ti = 0; i < A.size(); i++) {
91B[B.size() - 1] = ele;
101template<
typenameT>
102std::valarray<T>
pop_front(
conststd::valarray<T> &A) {
104B.resize(A.size() - 1);
105 for(
size_ti = 1; i < A.size();
118template<
typenameT>
119std::valarray<T>
pop_back(
conststd::valarray<T> &A) {
121B.resize(A.size() - 1);
122 for(
size_ti = 0; i < A.size() - 1;
135template<
typenameT>
137std::vector<std::vector<std::valarray<T>>> &B) {
139 if(A.size() != B.size()) {
140std::cerr <<
"ERROR ("<< __func__ <<
") : ";
142<<
"Can not equally shuffle two vectors with different sizes: ";
143std::cerr << A.size() <<
" and "<< B.size() << std::endl;
144std::exit(EXIT_FAILURE);
146 for(
size_ti = 0; i < A.size(); i++) {
148std::srand(std::chrono::system_clock::now().time_since_epoch().count());
149 size_trandom_index = std::rand() % A.size();
151std::swap(A[i], A[random_index]);
152std::swap(B[i], B[random_index]);
165template<
typenameT>
167 conststd::pair<size_t, size_t> &shape,
168 constT &low,
constT &high) {
171std::default_random_engine generator(
172std::chrono::system_clock::now().time_since_epoch().count());
173std::uniform_real_distribution<T> distribution(low, high);
174 for(
size_ti = 0; i < shape.first; i++) {
177row.resize(shape.second);
178 for(
auto&r : row) {
179r = distribution(generator);
192template<
typenameT>
194 conststd::pair<size_t, size_t> &shape) {
196 for(
size_ti = 0; i < shape.first; i++) {
199row.resize(shape.second);
212template<
typenameT>
214 conststd::pair<size_t, size_t> &shape) {
216 for(
size_ti = 0; i < shape.first; i++) {
219row.resize(shape.second);
231template<
typenameT>
232T
sum(
conststd::vector<std::valarray<T>> &A) {
234 for(
const auto&a : A) {
246template<
typenameT>
247std::pair<size_t, size_t>
get_shape(
conststd::vector<std::valarray<T>> &A) {
248 const size_tsub_size = (*A.begin()).size();
249 for(
const auto&a : A) {
251 if(a.size() != sub_size) {
252std::cerr <<
"ERROR ("<< __func__ <<
") : ";
253std::cerr <<
"Supplied vector is not 2D Matrix"<< std::endl;
254std::exit(EXIT_FAILURE);
257 returnstd::make_pair(A.size(), sub_size);
268template<
typenameT>
270 conststd::vector<std::vector<std::valarray<T>>> &A,
constT &low,
272std::vector<std::vector<std::valarray<T>>> B =
277 if(shape.first != 1) {
278std::cerr <<
"ERROR ("<< __func__ <<
") : ";
280<<
"Supplied vector is not supported for minmax scaling, shape: ";
281std::cerr << shape << std::endl;
282std::exit(EXIT_FAILURE);
284 for(
size_ti = 0; i < shape.second; i++) {
285T min = B[0][0][i], max = B[0][0][i];
286 for(
size_tj = 0; j < B.size(); j++) {
288min = std::min(min, B[j][0][i]);
289max = std::max(max, B[j][0][i]);
291 for(
size_tj = 0; j < B.size(); j++) {
294((B[j][0][i] - min) / (max - min)) * (high - low) + low;
306template<
typenameT>
307size_t argmax(
conststd::vector<std::valarray<T>> &A) {
311 if(shape.first != 1) {
312std::cerr <<
"ERROR ("<< __func__ <<
") : ";
313std::cerr <<
"Supplied vector is ineligible for argmax"<< std::endl;
314std::exit(EXIT_FAILURE);
317 returnstd::distance(std::begin(A[0]),
318std::max_element(std::begin(A[0]), std::end(A[0])));
328template<
typenameT>
330 conststd::vector<std::valarray<T>> &A, T (*func)(
constT &)) {
331std::vector<std::valarray<double>> B =
346template<
typenameT>
347std::vector<std::valarray<T>>
operator*(
conststd::vector<std::valarray<T>> &A,
349std::vector<std::valarray<double>> B =
364template<
typenameT>
365std::vector<std::valarray<T>>
operator/(
conststd::vector<std::valarray<T>> &A,
367std::vector<std::valarray<double>> B =
381template<
typenameT>
383 conststd::vector<std::valarray<T>> &A) {
385std::vector<std::valarray<T>> B;
387 for(
size_tj = 0; j < shape.second; j++) {
388std::valarray<T> row;
389row.resize(shape.first);
390 for(
size_ti = 0; i < shape.first; i++) {
405template<
typenameT>
407 conststd::vector<std::valarray<T>> &A,
408 conststd::vector<std::valarray<T>> &B) {
412 if(shape_a.first != shape_b.first || shape_a.second != shape_b.second) {
413std::cerr <<
"ERROR ("<< __func__ <<
") : ";
414std::cerr <<
"Supplied vectors have different shapes ";
415std::cerr << shape_a <<
" and "<< shape_b << std::endl;
416std::exit(EXIT_FAILURE);
418std::vector<std::valarray<T>> C;
419 for(
size_ti = 0; i < A.size(); i++) {
420C.push_back(A[i] + B[i]);
432template<
typenameT>
434 conststd::vector<std::valarray<T>> &A,
435 conststd::vector<std::valarray<T>> &B) {
439 if(shape_a.first != shape_b.first || shape_a.second != shape_b.second) {
440std::cerr <<
"ERROR ("<< __func__ <<
") : ";
441std::cerr <<
"Supplied vectors have different shapes ";
442std::cerr << shape_a <<
" and "<< shape_b << std::endl;
443std::exit(EXIT_FAILURE);
445std::vector<std::valarray<T>> C;
446 for(
size_ti = 0; i < A.size(); i++) {
447C.push_back(A[i] - B[i]);
459template<
typenameT>
460std::vector<std::valarray<T>>
multiply(
conststd::vector<std::valarray<T>> &A,
461 conststd::vector<std::valarray<T>> &B) {
465 if(shape_a.second != shape_b.first) {
466std::cerr <<
"ERROR ("<< __func__ <<
") : ";
467std::cerr <<
"Vectors are not eligible for multiplication ";
468std::cerr << shape_a <<
" and "<< shape_b << std::endl;
469std::exit(EXIT_FAILURE);
471std::vector<std::valarray<T>> C;
473 for(
size_ti = 0; i < shape_a.first; i++) {
474std::valarray<T> row;
475row.resize(shape_b.second);
476 for(
size_tj = 0; j < shape_b.second; j++) {
477 for(
size_tk = 0; k < shape_a.second; k++) {
478row[j] += A[i][k] * B[k][j];
493template<
typenameT>
495 conststd::vector<std::valarray<T>> &A,
496 conststd::vector<std::valarray<T>> &B) {
500 if(shape_a.first != shape_b.first || shape_a.second != shape_b.second) {
501std::cerr <<
"ERROR ("<< __func__ <<
") : ";
502std::cerr <<
"Vectors have different shapes ";
503std::cerr << shape_a <<
" and "<< shape_b << std::endl;
504std::exit(EXIT_FAILURE);
506std::vector<std::valarray<T>> C;
507 for(
size_ti = 0; i < A.size(); i++) {
508C.push_back(A[i] * B[i]);
std::vector< std::valarray< T > > operator-(const std::vector< std::valarray< T > > &A, const std::vector< std::valarray< T > > &B)
std::vector< std::valarray< T > > operator*(const std::vector< std::valarray< T > > &A, const T &val)
std::vector< std::valarray< T > > operator+(const std::vector< std::valarray< T > > &A, const std::vector< std::valarray< T > > &B)
std::valarray< T > insert_element(const std::valarray< T > &A, const T &ele)
size_t argmax(const std::vector< std::valarray< T > > &A)
std::vector< std::valarray< T > > multiply(const std::vector< std::valarray< T > > &A, const std::vector< std::valarray< T > > &B)
T sum(const std::vector< std::valarray< T > > &A)
std::ostream & operator<<(std::ostream &out, std::vector< std::valarray< T > > const &A)
std::vector< std::valarray< T > > transpose(const std::vector< std::valarray< T > > &A)
void unit_matrix_initialization(std::vector< std::valarray< T > > &A, const std::pair< size_t, size_t > &shape)
std::valarray< T > pop_front(const std::valarray< T > &A)
std::pair< size_t, size_t > get_shape(const std::vector< std::valarray< T > > &A)
void uniform_random_initialization(std::vector< std::valarray< T > > &A, const std::pair< size_t, size_t > &shape, const T &low, const T &high)
void zeroes_initialization(std::vector< std::valarray< T > > &A, const std::pair< size_t, size_t > &shape)
std::vector< std::vector< std::valarray< T > > > minmax_scaler(const std::vector< std::vector< std::valarray< T > > > &A, const T &low, const T &high)
std::vector< std::valarray< T > > hadamard_product(const std::vector< std::valarray< T > > &A, const std::vector< std::valarray< T > > &B)
std::vector< std::valarray< T > > apply_function(const std::vector< std::valarray< T > > &A, T(*func)(const T &))
std::valarray< T > pop_back(const std::valarray< T > &A)
std::vector< std::valarray< T > > operator/(const std::vector< std::valarray< T > > &A, const T &val)
void equal_shuffle(std::vector< std::vector< std::valarray< T > > > &A, std::vector< std::vector< std::valarray< T > > > &B)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4