Ufunc#
-
class numpy::Ufunc#
numpy C++ class.
Example#
#include <numpy/np_ndarray.h>
using namespace numpy;
// Use Ufunc
Ufunc obj;
// ... operations ...
Constructors#
Signature |
Location |
Example |
|---|---|---|
|
NP_UFUNC.H:63 |
Operators#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
auto -> NDArray<std::any> |
NP_UFUNC.H:102 |
|
|
auto -> NDArray<std::any> |
NP_UFUNC.H:137 |
|
|
auto -> NDArray<std::any> |
NP_UFUNC.H:183 |
Indexing / Selection#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
const std::string & |
NP_UFUNC.H:304 |
|
|
const Func & |
NP_UFUNC.H:299 |
|
|
std::any |
NP_UFUNC.H:81 |
|
|
TypeId |
NP_UFUNC.H:429 |
Other Methods#
Signature |
Return Type |
Location |
Example |
|---|---|---|---|
|
std::any |
NP_UFUNC.H:361 |
|
|
std::any |
NP_UFUNC.H:449 |
|
|
std::enable_if_t<std::is_invocable_v<Func,T1,T2>,std::any> |
NP_UFUNC.H:336 |
|
|
std::enable_if_t<!std::is_invocable_v<Func,T1,T2>,std::any> |
NP_UFUNC.H:354 |
|
|
std::any |
NP_UFUNC.H:523 |
|
|
std::any |
NP_UFUNC.H:542 |
|
|
std::any |
NP_UFUNC.H:561 |
|
|
std::enable_if_t<std::is_invocable_v<Func,T>,std::any> |
NP_UFUNC.H:310 |
|
|
std::enable_if_t<!std::is_invocable_v<Func,T>,std::any> |
NP_UFUNC.H:327 |
|
|
object_ |
NP_UFUNC.H:619 |
|
|
TargetT |
NP_UFUNC.H:579 |
|
|
bool |
NP_UFUNC.H:80 |
|
|
size_t |
NP_UFUNC.H:78 |
|
|
size_t |
NP_UFUNC.H:79 |
|
|
std::string |
NP_UFUNC.H:84 |
Code Examples#
The following examples are extracted from the test suite.
getIdentity (np_test_3_all.cpp:1055)
1045 try {
1046 auto mult_func = [](double a, double b) { return a * b; };
1047 auto ufunc_mult = numpy::frompyfunc(mult_func, 2, 1, std::any{ 1.0 });
1048
1049 if (!ufunc_mult.hasIdentity()) {
1050 std::cout << "[FAIL] Identity value failed";
1051 return 1;
1052 }
1053
1054 double identity = std::any_cast<double>(ufunc_mult.getIdentity());
1055 if (std::abs(identity - 1.0) > 1e-10) {
1056 std::cout << "[FAIL] Identity value failed";
1057 return 1;
1058 }
1059
1060 // std::cout << "[OK] Identity value works correctly" << std::endl;
1061 std::cout << " -> tests passed" << std::endl;
1062 return 0;
1063 }
1064 catch (const std::exception& e) {
hasIdentity (np_test_3_all.cpp:1050)
1040 }
1041
1042 // Test 8: Identity value
1043 int np_test_frompyfunc_identity_value() {
1044 std::cout << "========= np_test_frompyfunc_identity_value =======================";
1045
1046 try {
1047 auto mult_func = [](double a, double b) { return a * b; };
1048 auto ufunc_mult = numpy::frompyfunc(mult_func, 2, 1, std::any{ 1.0 });
1049
1050 if (!ufunc_mult.hasIdentity()) {
1051 std::cout << "[FAIL] Identity value failed";
1052 return 1;
1053 }
1054
1055 double identity = std::any_cast<double>(ufunc_mult.getIdentity());
1056 if (std::abs(identity - 1.0) > 1e-10) {
1057 std::cout << "[FAIL] Identity value failed";
1058 return 1;
1059 }