Skip to content

Commit 5ed8c0b

Browse files
authored
Merge pull request #254 from isuruf/slice
Fix slicing in matrices
2 parents 511453a + 69af2a7 commit 5ed8c0b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

symengine/lib/symengine_wrapper.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3164,7 +3164,7 @@ cdef class DenseMatrixBase(MatrixBase):
31643164
row_iter = [item[0]]
31653165

31663166
if isinstance(item[1], slice):
3167-
col_iter = range(*item[1].indices(self.rows))
3167+
col_iter = range(*item[1].indices(self.cols))
31683168
elif is_sequence(item[1]):
31693169
col_iter = item[1]
31703170
else:
@@ -3213,7 +3213,7 @@ cdef class DenseMatrixBase(MatrixBase):
32133213
row_iter = [key[0]]
32143214

32153215
if isinstance(key[1], slice):
3216-
col_iter = range(*key[1].indices(self.rows))
3216+
col_iter = range(*key[1].indices(self.cols))
32173217
elif is_sequence(key[1]):
32183218
col_iter = key[1]
32193219
else:

symengine/tests/test_matrices.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ def test_get_item():
7373
raises(IndexError, lambda: A[1:3, 3])
7474
raises(IndexError, lambda: A[1:3, -4])
7575

76+
A = zeros(3, 4)
77+
assert list(A[0, :]) == [0, 0, 0, 0]
78+
assert list(A[:, 0]) == [0, 0, 0]
79+
80+
A = zeros(4, 3)
81+
assert list(A[:, 0]) == [0, 0, 0, 0]
82+
assert list(A[0, :]) == [0, 0, 0]
83+
7684

7785
def test_set_item():
7886
A = DenseMatrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9])
@@ -129,6 +137,16 @@ def test_set_item():
129137
B[[0, 1], [0, 2]] = -1
130138
assert B == DenseMatrix(3, 3, [-1, 2, -1, -1, 14, -1, 4, 5, 6])
131139

140+
A = zeros(3, 4)
141+
B = ones(1, 4)
142+
A[0, :] = B
143+
assert A[0, :] == B
144+
145+
A = zeros(3, 4)
146+
B = ones(3, 1)
147+
A[:, 0] = B
148+
assert A[:, 0] == B
149+
132150

133151
def test_set():
134152
i7 = Integer(7)

0 commit comments

Comments
 (0)