[cppyy] Conversion of signed char pointer / vector into int8 numpy array

オープン
#21,434 コメント 2 件 リアクション 0 件 担当者 1 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@siliataider がすでに取り組んでいます。

2026年3月1日 から。

評価

この issue はまだ評価されていません。

説明

bug in:Python Interface
Check duplicate issues.
  • Checked for duplicates
Description

For common data types, e.g. int, double, we can convert a pointer / vector to numpy array with a direct construction:

import numpy as np
import cppyy
import cppyy.ll

vec = cppyy.gbl.std.vector([-1, 0, 1])
# works
arr = np.array(vec)
# also works
arr = np.array(vec.data())
Reproducer

However for int8 (or signed char in C++), the conversion only works for a pointer, but not for a vector:

import numpy as np
import cppyy
import cppyy.ll

arr = np.array([-1, 0, 1], dtype=np.int8)
view = cppyy.ll.cast[f"signed char*"](arr.ctypes.data)
view.reshape((3,))
vec = cppyy.gbl.std.vector['signed char'](view)
# does not work (OverflowError: character argument not in range(0x110000))
arr = np.array(vec)
# works
arr = np.array(vec.data())
ROOT version

cppyy==3.5.0

Installation method

conda (bundled with root)

Operating system

Linux

Additional context

No response

主要言語
C++
スター
3.3k
フォーク
1.6k
平均マージ
2日 10時間
マージ済み PR(30日)
200

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

root-project/root のほかの issue

root-project/root の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。