Fix Sympy Not Working: TypeError

  • Thread starter Thread starter ergospherical
  • Start date Start date
Click For Summary

Discussion Overview

The discussion revolves around a TypeError encountered while using the Sympy library in Python for matrix creation. Participants explore the correct format for inputting data into the Matrix function, focusing on the requirement for nested lists.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant reports a TypeError indicating that the data type is not understood and expects a list of lists or lists of values.
  • Another participant suggests creating a variable named "glist" to hold the matrix data before passing it to the Matrix function.
  • A different participant clarifies that the Matrix input must be a nested list, providing an example of the correct syntax for creating the matrix.
  • One participant humorously references a cultural touchstone related to the "list of lists" concept.
  • Another participant expresses a preference for using numpy.ndarray over lists of lists for matrix representation.

Areas of Agreement / Disagreement

There is no consensus on the preferred method for matrix representation, with differing opinions on the use of lists of lists versus numpy.ndarray.

Contextual Notes

The discussion does not resolve the broader implications of using different data structures for matrix operations in Python.

ergospherical
Science Advisor
Homework Helper
Education Advisor
Insights Author
Messages
1,100
Reaction score
1,387
Computer says "TypeError: Data type not understood; expecting list of lists or lists of values."

Python:
import sympy as sp

t,r,a,b = sp.symbols('t r a b')

g00 = -(1-(1/r))
g01 = 0
g02 = 0
g03 = 0
g10 = 0
g11 = 1/(1-(1/r))
g12 = 0
g13 = 0
g20 = 0
g21 = 0
g22 = r**2
g23 = 0
g30 = 0
g31 = 0
g32 = 0
g33 = (r**2)*((sp.sin(a))**2)

g = sp.Matrix([g00,g01,g02,g03],[g10,g11,g12,g13],[g20,g21,g22,g23],[g30,g31,g32,g33])
print(g)
 
Technology news on Phys.org
Make a list as a variable named “glist”

and then use it as the argument to Matrix

find an example online using sp.Matrix as a reference.
 
  • Like
Likes   Reactions: ergospherical
You just need to make the Matrix input a nested list, like this:
Python:
g = sp.Matrix([[g00,g01,g02,g03],[g10,g11,g12,g13],[g20,g21,g22,g23],[g30,g31,g32,g33]])

This is what the error message means when it says a "list of lists".
 
  • Like
Likes   Reactions: sysprog, ergospherical and pbuk
Aah the old list of lists trick -- Maxwell Smart of Get Smart!
 
  • Like
Likes   Reactions: sysprog
Matrices as lists of lists are horrible, numpy.ndarray is much nicer.
 
  • Like
Likes   Reactions: jim mcnamara and jedishrfu

Similar threads

  • · Replies 9 ·
Replies
9
Views
5K
  • · Replies 15 ·
Replies
15
Views
4K