@@ -3264,8 +3264,15 @@ cdef class DenseMatrixBase(MatrixBase):
3264
3264
def __get__ (self ):
3265
3265
return self .nrows()* self .ncols()
3266
3266
3267
- def ravel (self ):
3268
- return [self ._get(i, j) for i in range (self .nrows()) for j in range (self .ncols())]
3267
+ def ravel (self , order = ' C' ):
3268
+ if order == ' C' :
3269
+ return [self ._get(i, j) for i in range (self .nrows())
3270
+ for j in range (self .ncols())]
3271
+ elif order == ' F' :
3272
+ return [self ._get(i, j) for j in range (self .ncols())
3273
+ for i in range (self .nrows())]
3274
+ else :
3275
+ raise NotImplementedError (" Unknown order '%s '" % order)
3269
3276
3270
3277
def reshape (self , rows , cols ):
3271
3278
if len (self ) != rows* cols:
@@ -4389,28 +4396,14 @@ cdef class _Lambdify(object):
4389
4396
RCP[const symengine.Basic] b_
4390
4397
symengine.vec_basic args_, outs_
4391
4398
4392
- if isinstance (args, DenseMatrixBase):
4393
- nr = args.nrows()
4394
- nc = args.ncols()
4395
- mtx = (< DenseMatrixBase> args).thisptr
4396
- for ri in range (nr):
4397
- for ci in range (nc):
4398
- args_.push_back(deref(mtx).get(ri, ci))
4399
- else :
4400
- for arg in np.ravel(args, order = order):
4401
- e_ = _sympify(arg)
4402
- args_.push_back(e_.thisptr)
4403
-
4404
-
4405
- for curr_expr in exprs:
4406
- if isinstance (curr_expr, DenseMatrixBase):
4407
- nr = curr_expr.nrows()
4408
- nc = curr_expr.ncols()
4409
- mtx = (< DenseMatrixBase> curr_expr).thisptr
4410
- for ri in range (nr):
4411
- for ci in range (nc):
4412
- b_ = deref(mtx).get(ri, ci)
4413
- outs_.push_back(b_)
4399
+ for arg in np.ravel(args, order = order):
4400
+ e_ = _sympify(arg)
4401
+ args_.push_back(e_.thisptr)
4402
+
4403
+ for curr_expr in map (np.array, exprs):
4404
+ if curr_expr.ndim == 0 :
4405
+ e_ = _sympify(curr_expr.item())
4406
+ outs_.push_back(e_.thisptr)
4414
4407
else :
4415
4408
for e in np.ravel(curr_expr, order = order):
4416
4409
e_ = _sympify(e)
@@ -4509,7 +4502,7 @@ cdef class _Lambdify(object):
4509
4502
extra_dim = inp.shape[1 :]
4510
4503
else :
4511
4504
extra_dim = inp.shape
4512
- else :
4505
+ else :
4513
4506
if nbroadcast > 1 and inp.ndim == 1 :
4514
4507
extra_dim = (nbroadcast,) # special case
4515
4508
else :
0 commit comments