Comments (4)
Re-using the input array occurs by default when you have multiple frames to minimise the memory usage. If you had an input array with lots of frames then by creating a new array of equal size you may exceed your memory limits or result in a large slowdown (which is what happened for a couple of users, so we changed the behaviour). If your input array isn't that large you can pass per_frame=False
which should return a new array without modifying the original.
If you're converting only a single frame then a new array is returned. The behaviour is a bit inconsistent and it could be better explained in the documentation.
from pydicom.
I have frames between 50-100 for my particular work.
I am passing per_frame=True
The problem is when i do id(original_array) and id (new_array)
It returns same id.
Which is what got me confused as it is not supposed to modify the original array.
This is quite unexpected
from pydicom.
Why is it not supposed to modify the original array? You mean because the id
is the same? The input object is the same object returned when per_frame=True
, just with different values (but the same dtype).
Also, as an aside, in CPython id
is the memory address of the array. And it's definitely possible (I have seen it happen) that when an ndarray goes out of scope the memory can be reused if the replacement array has the same/smaller shape and dtype and therefore has the same id
even though its a new object.
from pydicom.
We can close this issue.
from pydicom.
Related Issues (20)
- Change Python formatting: black → ruff
- Intermittent test failures HOT 2
- Comparing two codes where one is erroneously set as a SRT will throw KeyError
- Add support for encoding JPEG2000 and JPEG-LS
- ValueError: cannot reshape array of size HOT 13
- GDCM fails to decode JPEG-LS pixel data with bits stored 6 or 7 HOT 1
- Decoding failure for JPEG-LS pixel data when pixel representation is 1 and bits stored is less than bits allocated
- Decoding failure for JPEG-LS when Bits Allocated is 16 and Bit Stored <= 8 HOT 1
- The (0028,0101) 'Bits Stored' value (16-bit) doesn't match the JPEG 2000 data (14-bit) HOT 3
- Compressing PixelData does not change the VR from OW to OB HOT 1
- dicom saved can't match the plt.show HOT 1
- can pydicom realize dicom image registration HOT 1
- Return sequence items as a list? HOT 3
- Dataset decompress function does not update length of the pixel data HOT 2
- deepcopy on dataset with private block fails HOT 1
- Convenience function to get existing UID instance by string HOT 2
- Inconsistent color-space in `pixel_array` decompressed with `pylibjpeg` vs `gdcm` HOT 2
- Remaining Pixel Data work HOT 6
- Pillow unable to decode 9-bit J2K images correctly HOT 1
- Invoking pixel_array truncates valid data if NumberOfFrames is not defined HOT 4
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 pydicom.