Comments (9)
@tdegeus Yes I have a couple guys on our staff thinking it worked like std::vector
is there a limitation to doing this on the underlying storage?
from xtensor.
@tdegeus The bottom level storage is just linear memory. Could it be implemented with a std::vector
to propagate STL behaviour to some of the interface methods?
from xtensor.
I think even that mostly the underlying IS std::vector
so there are surely many cases where we could fix resize
to propagate downstream properties. In addition, it would be nice to add push_back
to xt::xtensor<T, 1>
. Beyond that, were you thinking about more features?
from xtensor.
I think in ND we could implement a greedy concatenate using std::vector::insert
to avoid the current performance issues.
from xtensor.
From the implementation I think that the underlying resize is used:
xtensor/include/xtensor/xutils.hpp
Line 341 in 5f49f64
So I think that for xtensor
and xarray
resize
is item preserving. Could you comment @JohanMabille ?
Edit I tried, indeed elements are not conserved. Yet, as indicated, at first glance I don't see where elements are modified.
from xtensor.
@tdegeus I just read the gitter channel and it sounds like it is deferred to the container implementation. How do you propose ensuring that the implementation be element preserving?
from xtensor.
I have no idea yet ;)
from xtensor.
Actually the default container for xtensor
and xarray
is not std::vector
, but uvector, which does not preserve its elements when resized.
Anyway, the resize with preserving should be independent from the dimension of the tensor, and should not make any assumption regarding the underlying container. One way to implement it would be to compute the "intersection" shape, and then recursively loop over to copy from the first vector to the other one, and eventually swap the vectors.
(I'll try to post some code later)
from xtensor.
@JohanMabille why is std::vector<T>
not the underlying data structure? I've had a couple colleagues encounter issues with resizing containers expecting the same behaviour as std::vector<T>
.
from xtensor.
Related Issues (20)
- [Bug] Error when using vstack with mixed shape type HOT 1
- Can't find functions finding the maximum and minimum values and indices of the entire matrix HOT 3
- Adding `xt::reshape` like `reshape` intrinsic in Fortran HOT 11
- View sizes mismatch when assigning view to another view HOT 5
- `xt::real(...)` crashes the program when printed to `cout` HOT 1
- [C++20] Module and Concepts HOT 2
- update for xsimd 13 HOT 4
- arm64 build timing out on test_xblockwise_reducer.cpp HOT 1
- [Performance] Sub-optimal performance on means of strided axes
- Linear algebra operators HOT 1
- Buggy behaviour of non-contiguous xadaptor and scalar assignment
- saturation arithmetic?
- Tensor View Operations Slower Than Manual Looping
- How can I compile xtensor with gcc-7.5 HOT 5
- Avoiding template explosion on views HOT 4
- Performance issue possibly related to returning C-style adaptor from function
- Non-conformant testing of template-template-args c++ standard feature HOT 1
- transpose slower than numpy
- xt::variance crashes HOT 2
- Unexpected value of `xt::get_rank<xt::xtensor_adaptor>`.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xtensor.