dpilger26 / numcpp Goto Github PK
View Code? Open in Web Editor NEWC++ implementation of the Python Numpy library
Home Page: https://dpilger26.github.io/NumCpp
License: MIT License
C++ implementation of the Python Numpy library
Home Page: https://dpilger26.github.io/NumCpp
License: MIT License
hi
i try to build Numcpp on ubuntu1604. there are some bugs . cake is 3.15.2 and boost is 1.68.
***there is the log
Scanning dependencies of target Example
[ 50%] Building CXX object CMakeFiles/Example.dir/ReadMe.cpp.o
In file included from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions.hpp:57:0,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp.hpp:37,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/ReadMe.cpp:1:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(const std::array<_Tp, _Nm>&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:55:23: error: missing template arguments before '(' token
return NdArray(inArray);
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(const std::vector<_RealType>&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:72:23: error: missing template arguments before '(' token
return NdArray(inVector);
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(const std::deque<_Tp>&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:89:23: error: missing template arguments before '(' token
return NdArray(inDeque);
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(const std::set&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:106:23: error: missing template arguments before '(' token
return NdArray(inSet);
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(std::initializer_list<Tp>&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:124:23: error: missing template arguments before '(' token
return NdArray(inList);
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp: In function 'nc::NdArray nc::asarray(std::initializer_list<std::initializer_list<Tp> >&)':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Functions/asarray.hpp:142:23: error: missing template arguments before '(' token
return NdArray(inList);
^
In file included from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/DCM.hpp:35:0,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations.hpp:31,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp.hpp:44,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/ReadMe.cpp:1:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp: At global scope:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp:61:70: error: array must be initialized with a brace-enclosed initializer
std::array<double, 4> components = { 0.0, 0.0, 0.0, 1.0 };
^
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp:61:70: error: too many initializers for 'std::array<double, 4ul>'
In file included from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/DCM.hpp:35:0,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations.hpp:31,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp.hpp:44,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/ReadMe.cpp:1:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp: In static member function 'static nc::rotations::Quaternion nc::rotations::Quaternion::identity()':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp:357:35: error: use of deleted function 'constexpr nc::rotations::Quaternion::Quaternion()'
return Quaternion();
^
In file included from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/DCM.hpp:35:0,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations.hpp:31,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp.hpp:44,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/ReadMe.cpp:1:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp:179:13: note: 'constexpr nc::rotations::Quaternion::Quaternion() noexcept' is implicitly deleted because its exception-specification does not match the implicit exception-specification 'noexcept (false)'
Quaternion() noexcept = default;
^
In file included from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/DCM.hpp:35:0,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations.hpp:31,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp.hpp:44,
from /home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/ReadMe.cpp:1:
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp: In member function 'nc::NdArray nc::rotations::Quaternion::toNdArray() const':
/home/lisas/numcpp_new/numcpp_new/NumCpp/examples/ReadMe/../../include/NumCpp/Rotations/Quaternion.hpp:655:31: error: missing template arguments before '(' token
return NdArray(components);
^
CMakeFiles/Example.dir/build.make:62: recipe for target 'CMakeFiles/Example.dir/ReadMe.cpp.o' failed
make[2]: *** [CMakeFiles/Example.dir/ReadMe.cpp.o] Error 1
CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/Example.dir/all' failed
make[1]: *** [CMakeFiles/Example.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
best
lisa shi
in matlab using one int vector's data as selector of another vector or matirx is supported. For example,
a=[9 8 7 6 5];
b=[5 1 3];
a(b)
will give answer [5 9 7]
using pointer in c++ together with Numcpp could fullfill this problem but seemed cumbersome. so would you please add support for this functionality? like:
Ndarray a= {9,8,7,6,5};
Ndarray b={4,0,2,0};
a.select(b) represent {5,9,7,9}
by the way, it would be nice to add find, findfirst findall methods which would return an Ndarray and could be used as selector of another Ndarray if it is int type.
thanks.
Hi
can support np.transpose(bboxes, [3, 1, 2, 0])?
thanks!
Hey,
I was wondering if you could let me know how I can get numpy.diag in Numcpp. I could not find anything regarding that method in the documentation. There is nc:diagonal, which is different with numpy.diag. Wondering if you have already implemented numpy.diag .
Thanks in advance.
Thank you very much for the project.
However, here is one thing I cannot resolve so far...May be it is just my week python understanding (not familiar).
Python project, which I try to convert into C++ QT project has a line like img = numpy.array(img, dtype=numpy.uint8);
Which, in c++ should looks like nc::array(img, nc::uint8);
but it is not works..
Appreciate if you can show hot to solve.
Thanks
It seems to me that both libraries are aiming to have a similar api to numpy.
What are the main differences between these two? Thanks! :D
as title can build in with android ndk for app?
I have built a Dynamic-link library using NumCpp and then used Python to call this dll file, in my Python code, the array is in Numpy, so how can I pass Numpy array into the NumCpp API?
The API in my C++ code is defined as follows:
#define MATHLIBRARY_API __declspec(dllexport)
extern "C" MATHLIBRARY_API
NdArray<double> cpp_double_dot(const NdArray<double>& inArray1, const NdArray<double>& inArray2);
NdArray<double> cpp_double_dot(const NdArray<double>& inArray1, const NdArray<double>& inArray2) {
return dot<double>(inArray1, inArray2);
}
Then I made the dll file with name "NumCpp.dll".
And in the Python, is as follows:
test = cdll.LoadLibrary('NumCpp.dll')
vector_a = np.array([[1, 4], [5, 6]])
vector_b = np.array([[2, 4], [5, 2]])
print (test.cpp_double_dot(vector_a, vector_b))
But the API complains that
ctypes.ArgumentError: argument 1: <class 'TypeError'>: Don't know how to convert parameter 1
So I want to know can I use NumCpp and NumPy together?
Looking forward to your help!
Thanks very much!
.\Numcpp_include/NumCpp/Vector/Vec3.hpp:271:38: error: no matching function for call to 'hypot(const double&, const double&, const double&)'
return std::hypot(x, y, z);
It seem doesn't support the cv::Mat for opencv?
Hi!
Will be support ravel() method?
I dump the array in numpy use a.dump("test.bin"). Yet I can not recover the array in NumCpp with auto a = nc::load("test.bin") .
Is the file format of NumCpp differs from numpy in python?
Hi!
I try:
nc::NdArray<float> b1({2.3, -3.2, -5.8});
nc::NdArray<float> b2(1, 3);
b2=nc::floor(b1); // must be 2, -4, -6
but get error: could not convert ‘returnArray’ from ‘nc::NdArray’ to ‘nc::NdArray’
return returnArray;
If i set b1 and b2 as double - ok.
nc::floor() returns nc::NdArray<double>
instead nc::NdArray<dtype>
Thanks!
@dpilger26
great work!
Is it possible to use numcpp in C?
woulld you like to give some examples?
thanks!
I work with tenders of dimension 4 .
We have to rewrite from python and numpy to C++ .
If the ability to do so:
t = t[:,5:, :, :]
t.transpose(0, 2, 3, 1).reshape(-1, 1)
Is it possible to simulate behavior that may not exist ?
where is install and build step in ubuntu and windows
in python:
a = np.array([[1,2,3,4,5],[5,4,3,2,1]])
b = a[0:2,1:3]
b*=2
so:
b:
[[4, 6],
[8, 6]]
a:
[[1, 4, 6, 4, 5],
[5, 8, 6, 2, 1]]
or:
b[:]=b/4
b
array([[1, 1],
[2, 1]])
a
array([[1, 1, 1, 4, 5],
[5, 2, 1, 2, 1]])
but in numcpp:
nc::NdArray a = { {1,2,3,4,5},
{5,4,3,2,1}
};
auto b = a(nc::Slice(0, 2), nc::Slice(1, 3));
b*=2
b:
[[4, 6],
[8, 6]]
a:
[[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]]
or:
b[b.rSlice()] = b/4;
b:
[[1, 1],
[2, 1]]
a:
[[1, 2, 3, 4, 5],
[5, 4, 3, 2, 1]]
How about adding an extra function for "reshape"?
Like this:
reshape(a,b)
{
if(a==-1&&size_%b==0)
reshape(size_/b,b)
}
Hi!
I'm trying multiply two arrays with different data types:
nc::NdArray<int8_t> a({-1,2,-3,4});
nc::NdArray<int16_t> b({22,33,-33,44});
auto m=a*b; // must be -22, 66, 99, 176
but get error: no match for ‘operator*’ (operand types are ‘nc::NdArray’ and ‘nc::NdArray’)
If arrays is same data type - ok.
Is it possible to add multiplying different data types?
Thanks!
Hi, i'm beginner in C++, and search in the web about install and use library's C++, but i don't find a good tutorial.
can you help me how use your library ?
Thanks
you know ,in pytorch, use tensor.numpy()
transform to tensor andtorch.Tensor(numpy)
transform to numpy. Is there any method to transform torch::Tensor to nc::NdArray? or nc::NdArray to torch::Tensor
Hi
I am not sure I understand the purpose of this project. As I understand it, it's a numpy-like tool for C++ that can be used from python. I can't find any reference (without reading the code) to what I am looking for. Is the memory-layout the same as in numpy? Can you wrap (without copying) between numpy and NumCpp? Can you use NumCpp as a drop-in replacement for numpy?
BTW, are you aware of pythran's numpy implementation?
Thanks!
i tried the svd in numcpp and numpy,the same size of ndarray,the numcpp is slower than numpy about 5 times.
Is there any possibilities that you will develop an android-edition numcpp?
Hey,
I've been trying to access the rows and columns of my 2D array using [i,j] and replace its values with some other values, however, it seems that Ndarray doesn't support neither X[i,j] (which works in python) nor X[i][j] ways of accessing elements. It seems that the array is considered 1D and if I want to reach the X[1][2] element in a 3*3 array for example, I should access it as X[5]. Am I wrong? I was wondering if you could tell me how I can access the rows and columns of an Ndarray like X[i][j].
Thanks in advance!
I found for matrix dot production, the run-time of NumPy and NumCpp have a very big difference, the former is much quicker. I'm so curious about that.
For my testing, I have a PC with I7 8700K.
I run the C++ code with VS2019, Release X64. The runtime is 3.772 second.
Here is my test C++ code.
auto x = nc::arange<double>(1000000);
x.reshape(1000, 1000);
auto y = nc::arange<double>(1000000);
y.reshape(1000, 1000);
std::clock_t start;
double duration;
start = std::clock();
auto z = nc::dot<double>(x, y);
duration = (std::clock() - start) / (double)CLOCKS_PER_SEC;
cout << "NumCpp: " << duration << endl;
I run the Python just with the command line, the run time is just 0.012s.
Here is my test Python code.
x = np.arange(1000000.).reshape((1000, 1000))
y = np.arange(1000000.).reshape((1000, 1000))
s2 = time.time()
c = np.dot(x, y)
e2 = time.time()
print ("numpy: ", str(e2 - s2))
For all of my tests, I tested for several times and checked the output.
Can you please explain why there exists such a big performance gap? Especially the C++ one is much slower, it so counter-intuitive...
Thanks very much!
I want histogramdd function just like it in numPy
It is often used together with opencv to treat multi channel component historgram.
I hope NumCpp+opencv in C++ can easily finish most of those in numpy +opencv-python.
e.g., in python numpy, you can do:
np.zeros([3,4,5])
how to do that with nc::zeros?
nc::zeros<float>(3,4,5);
gives error: error: no matching function for call to ‘zeros(int, int, int)’
This is Vec3 and not Vec2
//============================================================================
// Method Description:
/// Returns the Vec2 as a string
///
/// @return std::string
///
std::string toString() const noexcept
{
std::stringstream stream;
stream << "Vec2[" << x << ", " << y << ", " << z << "]";
return stream.str();
}
Hello,
Is there a version of Numpy's .T method for transposing in this library? If not, would it be possible to add one?
Hi.
Will be support outer() method?
I'm sorry if I overlooked.
Describe the bug
There's a compilation error with C++11. The error occurs in both basic programs as well as the examples.
In file included from ReadMe.cpp:1:
In file included from /usr/local/include/NumCpp.hpp:34:
In file included from /usr/local/include/NumCpp/Coordinates.hpp:31:
In file included from /usr/local/include/NumCpp/Coordinates/Coordinate.hpp:31:
In file included from /usr/local/include/NumCpp/Coordinates/Dec.hpp:33:
In file included from /usr/local/include/NumCpp/Functions/deg2rad.hpp:31:
In file included from /usr/local/include/NumCpp/NdArray.hpp:32:
/usr/local/include/NumCpp/NdArray/NdArrayOperators.hpp:805:47: error: 'dtype' does not refer to a value
returnArray.begin(), std::bit_not<dtype>());
^
/usr/local/include/NumCpp/NdArray/NdArrayOperators.hpp:797:23: note: declared here
template<typename dtype>
^
/usr/local/include/NumCpp/NdArray/NdArrayOperators.hpp:805:39: error: no member named 'bit_not' in namespace 'std'
returnArray.begin(), std::bit_not<dtype>());
~~~~~^
/usr/local/include/NumCpp/NdArray/NdArrayOperators.hpp:805:54: error: expected expression
returnArray.begin(), std::bit_not<dtype>());
^
ReadMe.cpp:89:10: warning: decomposition declarations are a C++17 extension [-Wc++17-extensions]
auto [rows, cols] = nc::nonzero(a);
^~~~~~~~~~~~
1 warning and 3 errors generated.
To Reproduce
cd examples/ReadMe
c++ -std=c++11 ReadMe.cpp -o test -lboost_filesystem
Expected behavior
The program compiles, as it does with C++14 and C++17.
Compiler Info
c++ --version
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Hi,
I tried going through the function in (https://github.com/dpilger26/NumCpp/blob/master/src/NumCpp/Methods.hpp). To me, it seems that the methods like slicing are supported for 2d array but not for the nd-array. Is it true or can you please point me to an nd-array example.
Thanks
i'm try to use vstack
to stack a series ndarray
,but the size of series is uncertain and the initializer_list
can't convert from vector
or list
.
so,can i change the implement of the stack function?
If you implement these methods it will be very useful.
for example in python suppose we have arrays of rectangle points (2 4) so we can find TopLeft
and BottomRight
like this :
tl = np.amin(pts,1)
br = np.amax(pts,1)
https://www.boost.org/doc/libs/1_64_0/libs/python/doc/html/numpy/tutorial/ndarray.html
Example:
#include <boost/python/numpy.hpp>
#include <iostream>
namespace p = boost::python;
namespace np = boost::python::numpy;
int main(int argc, char **argv)
{
Py_Initialize();
np::initialize();
}
Why not use 'nc' as namespace, just like 'std'?
用起来感觉 的确挺方便 但是处理效率上怎么样 ?
It feels very convenient to use, but how is the processing efficiency?
I just installed Numcpp on a new machine and tried to compile a piece of code which was working on another machine.
However, on the new machine, I get compilation error: ambiguous overload for ‘operator+’ (operand types are ‘nc::NdArray<double>’ and ‘int’).
There are errors related to the ambiguity for nearly all the operators.
I was wondering if you could help me fix this issue.
I am using Boost 1.7, Clang 6.0, and tried different versions of gcc, including 7 , 8.3.0, 9.2.
Thanks in advance.
I was amazingto see the description about "median": Does NOT average if array has even number of elements!
// Method Description:
/// Return the median along a given axis. Does NOT average
/// if array has even number of elements!
///
/// @param
/// inAxis (Optional, default NONE)
/// @return
/// NdArray
///
NdArray<dtype> median(Axis inAxis = Axis::NONE) const noexcept
It is not difficult to fix it, E.g. on the x axis
case Axis::ROW:
{
NdArray<dtype> transposedArray = transpose();
NdArray<dtype> returnArray(1, transposedArray.shape_.rows);
for (uint32 row = 0; row < transposedArray.shape_.rows; ++row)
{
uint32 middle = (transposedArray.shape_.cols - 1) / 2;
stl_algorithms::nth_element(transposedArray.begin(row), transposedArray.begin(row) + middle, transposedArray.end(row));
if (transposedArray.shape_.cols % 2 == 0)
{
auto lhs = transposedArray(row, middle);
stl_algorithms::nth_element(transposedArray.begin(row), transposedArray.begin(row) + middle + 1, transposedArray.end(row));
auto rhs = transposedArray(row, middle + 1);
returnArray(0, row) = (lhs + rhs) / 2.0f;
}
else
{
returnArray(0, row) = transposedArray(row, middle);
}
}
return returnArray;
}
I am expecting a more complete version
why use loop and limit Parameter InPower to UINT instead of using stl::power.
a = array([[0, 1, 0, 0, 1, 1, 0],
[1, 0, 1, 0, 0, 0, 0],
[0, 1, 1, 0, 0, 0, 1]])
in numpy, np.nonzero(a) returns: (array([0, 0, 0, 1, 1, 2, 2, 2]), array([1, 4, 5, 0, 2, 1, 2, 6])).
in numcpp, nc::nonzero(a) returns: [[1, 4, 5, 7, 9, 15, 16, 20]].
can you tell me how to convert result of numcpp to numpy format? Thanks a lot.
I got a vs2017 C++ project,which contains two source files and one header file as below:
exutil.h
#pragma once
#ifndef EXUTIL_H
#define EXUTIL_H
#include "NumCpp.hpp"
#endif // !EXUTIL_H
exutil.cpp
#include "exutil.h"
ex1.cpp
#include "exutil.h"
int main()
{
return 0;
}
When building, vs prompted:
exutil.obj : error LNK2005: "class boost::random::mersenne_twister_engine<unsigned int,32,624,397,31,2567483615,11,4294967295,7,2636928640,15,4022730752,18,1812433253> nc::generator_" (?generator_@nc@@3v?$mersenne_twister_engine@I$0CA@$0CHA@$0BIN@$0BP@$0JJAILANP@$0L@$0PPPPPPPP@$06$0JNCMFGIA@$0P@$0OPMGAAAA@$0BC@$0GMAHIJGF@@random@boost@@A) already defined in ex1.obj
ex1.obj : error LNK2005: "class nc::NdArray __cdecl nc::imageProcessing::windowExceedances(class nc::NdArray const &,unsigned char)" (?windowExceedances@imageProcessing@nc@@ya?AV?$NdArray@_N@2@AEBV32@E@Z) already defined in ex1.obj
ex1.obj : error LNK2005: "class nc::NdArray __cdecl nc::find(class nc::NdArray const &,unsigned int)" (?find@nc@@ya?AV?$NdArray@I@1@AEBV?$NdArray@_N@1@I@Z) already defined in ex1.obj
\x64\Release\ex1.exe : fatal error LNK1169: one or more multiply defined symbols
This happens whether or not write functions or class in exutil.cpp.
Making related functions in .hpp files inline and variables extern could fixed linking error.But I am not sure the consequences.
What I use was the most recent version of NumCpp cloned from github.
Thanks.
Hi
I try:
nc::NdArray<uint16_t> a1({{1,2,3}, {4,5,6}});
nc::NdArray<uint16_t> a2(2,3); // {{0,0,0}, {0,0,0}}
auto val0=a1.at(0, nc::Slice(0, a1.numCols())); // 1,2,3
a2(0, nc::Slice(0, a2.numCols())) = val0; // must be {{1,2,3}, {0,0,0}}
//or this:
a2.at(0, nc::Slice(0, a2.numCols())) = val0;
but failed.
What i'm doing wrong?
Thanks!
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
Hi,
Do this library got a function for saving as a numpy file ?
If not, do i have an another alternative to save a numpy array with a C++ ?
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.