Sequential Integer Matrices in Python Without Packages

python matrix
python list
python range
2d array in python
python array module
python list of integers
python create array of size n
python array of strings

Just when I think I'm decent at something, I find a simple thing I cannot overcome.

I need to create a symmetrical row x column matrix given a start and block for a checksum. The entries should be in sequential order.

def main(start_index, block):
    num_rows, num_cols = block, block
    matrix = []

    for r in range(num_rows):
        temp = []

        for c in range(num_cols):
            temp.append(c)

        matrix.append(temp)

    return matrix

The output here is: [[0, 1, 2], [0, 1, 2], [0, 1, 2]]

What I'm trying to obtain is: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

And not just for a 3x3 but dynamically as well.

Note: No packages like numpy, that's not the point of this ask. Only native python.

You are appending c which is always a range between 0 and num_cols. You need to calculate c based on which row you are in. Something like:

def main(start_index, block):
    num_rows, num_cols = block, block
    matrix = []

    for r in range(num_rows):
        temp = []

        for c in range(0, num_cols):
            temp.append(start_index + c + (r * num_cols))

        matrix.append(temp)

    return matrix

main(0, 3)

>> [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

You could also write this as a generator from start_index to row * columns that generates your rows lazily. For example:

def main(start_index, block):
    num_rows, num_cols = block, block

    total = num_rows * num_cols

    for i in range(start_index, total + start_index, num_cols):
        yield list(range(i, num_cols + i))

list(main(10, 4))
>> [[10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21], [22, 23, 24, 25]]

Basic Operations in Python, To create an array of a sequence of integers between 0 and 10: to create an alias pointing to the NumPy package in order to shorten verbose module names, � Creating a Matrix in Python without numpy [duplicate] Ask Question Asked 3 years, 9 months ago. Active 1 year, 11 months ago. Viewed 36k times 8. 1. This question

Are you overcomplicating?

In [1]: nrow, ncol, start = 3, 5, 7                                                       

In [2]: [[start+c+r*ncol for c in range(ncol)] for r in range(nrow)]                      
Out[2]: [[7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21]]

Should you prefer more descriptive names:

In [3]: n_rows, n_cols, n_start = 3,5,7                        

In [4]: [[n_start + col + row*n_cols for col in range(n_cols)] for row in range(n_rows)]               
Out[4]: [[7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21]]

Eventually, to have itertools.count you absolutely don't need to import itertools

In [10]: def count(start=0, step=1): 
    ...:     while True: 
    ...:         yield start 
    ...:         start += step 

In [11]: nr, nc, item = 3, 4, count()                                                                                                                                              

In [12]: [[next(item) for c in range(nc)] for r in range(nr)]                                                                                                                      
Out[12]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

In [13]: nr, nc, item = 3, 4, count(start=4, step=3)                                                                                                                               

In [14]: [[next(item) for c in range(nc)] for r in range(nr)]                                                                                                                      
Out[14]: [[4, 7, 10, 13], [16, 19, 22, 25], [28, 31, 34, 37]]

array — Efficient arrays of numeric values — Python 3.8.5 , This module defines an object type which can compactly represent an array of basic values: characters, integers, floating point numbers. Arrays are sequence� The package also has a plugin function so you can add your own modules. To use Eigen, install it with pip and import it in your code. PyTorch is a library for Machine Learning, because of this it has matrix operations.

You can use itertools.count to create a generator for generating incrementing integers, every call to next will get the next integer

Then you can use this generator for filling in the values when you create your lists

import itertools

def get_square_matrix(size):
    counter = itertools.count(start_index)
    matrix = []
    for row in range(size):
        matrix.append([next(counter) for _ in range(size)])
    return matrix

8.6. array — Efficient arrays of numeric values — Python 2.7.18 , This module defines an object type which can compactly represent an array of basic values: characters, integers, floating point numbers. Arrays are sequence� There is another way to create a matrix in python. It is using the numpy matrix() methods. It is the lists of the list. For example, I will create three lists and will pass it the matrix() method. list1 = [2,5,1] list2 = [1,3,5] list3 = [7,5,8] matrix2 = np.matrix([list1,list2,list3]) matrix2 . You can also find the dimensional of the matrix

Python Matrix and Introduction to NumPy, You can treat lists of a list (nested list) as matrix in Python. However, there is a better way of working Python matrices using NumPy package. NumPy is a Print the Fibonacci sequence Array of integers, floats and complex Numbers The argument dtype=int doesn’t refer to Python int. It translates to NumPy int64 or simply np.int. NumPy offers you several integer fixed-sized dtypes that differ in memory and limits: np.int8: 8-bit signed integer (from -128 to 127) np.uint8: 8-bit unsigned integer (from 0 to 255) np.int16: 16-bit signed integer (from -32768 to 32767)

NumPy: Array Object - Exercises, Practice, Solution, Practice with solution of exercises on Python NumPy: Array Object array of size 2 x 3 (composed of 4-byte integer elements), also print the shape, Write a NumPy program to create a new shape to an array without changing its data. Write a NumPy program to convert (in sequence depth wise (along� In Python, we can implement a matrix as a nested list (list inside a list). We can treat each element as a row of the matrix. For example X = [[1, 2], [4, 5], [3, 6]] would represent a 3x2 matrix. First row can be selected as X[0] and the element in first row, first column can be selected as X[0][0].

Functions for Creating NumPy Arrays — Python Like You Mean It, Creating Sequential Arrays: arange and linspace �. The arange function allows you to initialize a sequence of integers based on a starting point (inclusive),� Multiplication of two matrices X and Y is defined only if the number of columns in X is equal to the number of rows Y. If X is a n x m matrix and Y is a m x l matrix then, XY is defined and has the dimension n x l (but YX is not defined). Here are a couple of ways to implement matrix multiplication in Python. Source Code: Matrix Multiplication

Comments
  • Where did the 0th position in the 0th list entry go here? The 0 in [0,1,2] I manually fixed it start_index-1 But I don't quite see where we missed the iteration.
  • @phtaedrus not sure why I was adding one. See edit.
  • Thanks, @Mark_Meyer. Checked. For the generator function, wouldn't it be considered non-python to use a while instead of for loops?
  • @phtaedrus, I'm not sure — I think the while loop is easier to read, but you can also do it as a for loop over a range. See edit.
  • I like this method a lot. Now looking into pythonic generators. Much appreciated!
  • Hey @gboffi, I don't think so, I like the list comprehension but in this case I don't find that easily readable.
  • Thank you! But I'm trying to use zero imports. Sorry, I 'll correct my statement but what I meant was only standard python, no imports.