Skip to content

Commit 4d1fdea

Browse files
committed
Add support for int8 int16, float16 float32 float64 buffer arrays
Signed-off-by: martinRenou <[email protected]>
1 parent 9e8a806 commit 4d1fdea

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

ipycanvas/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,18 @@ def binary_image(ar):
4141

4242
def array_to_binary(ar):
4343
"""Turn a NumPy array into a binary buffer."""
44+
# Unsupported int64 array JavaScript side
4445
if ar.dtype == np.int64:
4546
ar = ar.astype(np.int32)
4647

47-
if not ar.flags["C_CONTIGUOUS"]: # make sure it's contiguous
48+
# Unsupported float16 array JavaScript side
49+
if ar.dtype == np.float16:
50+
ar = ar.astype(np.float32)
51+
52+
# make sure it's contiguous
53+
if not ar.flags["C_CONTIGUOUS"]:
4854
ar = np.ascontiguousarray(ar)
55+
4956
return {'shape': ar.shape, 'dtype': str(ar.dtype)}, memoryview(ar)
5057

5158

src/utils.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
function getTypedArray(dataview: any, metadata: any) {
22
switch (metadata.dtype) {
3+
case 'int8':
4+
return new Int8Array(dataview.buffer);
5+
break;
6+
case 'int16':
7+
return new Int16Array(dataview.buffer);
8+
break;
39
case 'int32':
410
return new Int32Array(dataview.buffer);
511
break;
12+
case 'float32':
13+
return new Float32Array(dataview.buffer);
14+
break;
15+
case 'float64':
16+
return new Float64Array(dataview.buffer);
17+
break;
618
default:
719
throw 'Unknown dtype ' + metadata.dtype;
820
break;

0 commit comments

Comments
 (0)