Convert the decimal numbers expressed in a `numpy.ndarray` into a matrix representing elements in fractional form

Barry barry at barrys-emacs.org
Tue May 17 02:42:11 EDT 2022



> On 17 May 2022, at 05:59, hongy... at gmail.com <hongyi.zhao at gmail.com> wrote:
> 
> On Monday, May 16, 2022 at 11:27:58 PM UTC+8, Dennis Lee Bieber wrote:
>> On Mon, 16 May 2022 02:03:26 -0700 (PDT), "hongy... at gmail.com" 
>> <hongy... at gmail.com> declaimed the following: 
>> 
>> 
>>> print(lst) 
>> 
>> Printing higher level structures uses the repr() of the structure and 
>> its contents -- theoretically a form that could be used within code as a 
>> literal.
> 
> I tried with  the repr() method as follows, but it doesn't give any output:

Repr returns a string. You need to print its value to see it.

> 
> ```
> import os,sys
> import numpy as np
> from fractions import Fraction
> import re
> from pymatgen.symmetry.analyzer import SpacegroupAnalyzer
> from pymatgen.core import Lattice, Structure, Molecule, IStructure
> 
> def filepath(file):
>   script_dirname=os.path.dirname(os.path.realpath(__file__))
>   return (script_dirname + '/' + file)
> 
> s=IStructure.from_file(filepath('EntryWithCollCode136212.cif'))
> a = SpacegroupAnalyzer(s)
> SymOp=a.get_symmetry_operations()
> b=SymOp[1].affine_matrix.tolist()
> 
> def strmat(m):
>   if(np.array([m]).ndim==1):
>      return str(Fraction(m))
>   else: return list(map(lambda L:strmat(L), np.array(m)))
> 
> lst=[]
> for i in SymOp:
>   lst.append(i.affine_matrix.tolist())
> 
> a=str(strmat(lst))
> a=re.sub(r"'","",a)
> repr(a)

print(repr(a))

Barry

> ```
> 
>> If you want human-readable str() you will need to write your own 
>> output loop to do the formatting of the structure, and explicitly print 
>> each item of the structure. 
> 
> 
> -- 
> https://mail.python.org/mailman/listinfo/python-list
> 



More information about the Python-list mailing list