Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Convention for output of tuples

Đang mở
#708 4 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
numpy, python
Lĩnh vực
api, data

Hướng nghiên cứu

Start with the tuple_out.stan example and the test_tuple_out test shown in the issue, then inspect fit.stan_variable("c") and fit.c behavior. Compare array-of-tuples and tuple-of-arrays layouts, and define the resulting sample indexing convention before updating the relevant tests and documentation.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

In the develop branch, tuples generated by Stan programs are one-dimensional arrays of tuples. This can make it difficult to access elements of tuples. For example, consider the following test.

def test_tuple_out() -> None:
    stan = os.path.join(DATAFILES_PATH, 'tuple_out.stan')
    model = CmdStanModel(stan_file=stan)
    a = np.random.normal(0, 1, (5, 5))
    b = np.random.normal(0, 1, 3)
    fit = model.sample({"a": a, "b": b}, fixed_param=True, chains=1,
                       iter_sampling=20, iter_warmup=1, sig_figs=18)
    np.testing.assert_allclose(a, fit.stan_variable("c")[0][0])
    np.testing.assert_allclose(b, fit.stan_variable("c")[0][1])
// tuple_out.stan
data {
    matrix [5, 5] a;
    vector [3] b;
}

generated quantities {
    tuple(matrix[5, 5], vector[3]) c;
    c.1 = a;
    c.2 = b;
}

Then accessing c.1 samples is only possible through list comprehension (there may be some fancy indexing I'm not familiar with).

>>> fit.c.shape
(20,)
>>> fit.c[:, 0]
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

Would it make sense to return a tuple of arrays rather than an array of tuples? This would allow accessing samples more easily, e.g., in the above example we'd get

>>> fit.c[0].shape
(20, 5, 5)

This would however go against the convention that the first index refers to samples.

Ngôn ngữ chính
Python
Star
198
Fork
82
Merge trung bình
4 ngày 11 giờ
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của stan-dev/cmdstanpy

Tất cả issue của stan-dev/cmdstanpy

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.