It is a heterogeneous data type that is similar to a database row. Steps that you must follow to create structured array are shown below-
dtype()
constructor and pass list having tuples in it. Each tuple must have field name and their data type. Eg-t = np.dtype([('productname', 'U30'), ('numberofquantity', 'uint8'), ('price', 'float32'), ('inStock', 'bool')])You can also specify the field name and their data type in this way-
t = np.dtype({ 'names':('productname', 'numberofquantity', 'price', 'inStock'), 'formats':('U30', 'uint8', 'float32', 'bool')})In both of the above code, productname is represented by a 30-character string, numberofquantity is represented by a 8-bit unsigned integer, price is represented by 32-bit floating point number, and inStock is represented by boolean data type.
array()
function and pass a list having tuples in it. Each tuple must represent a record. And make dtype parameter equal to the one created above. Eg-arr = np.array([('Samsung Galaxy S2', 23, 15000, True), ('Apple iPhone X', 56, 80000, True), ('Motorola M20', 31, 11500, False)], dtype=t)
import numpy as np t = np.dtype([('empname', 'U40'), ('age', 'u1'), ('salary', 'u4'), ('designation', 'U30')]) arr = np.array([('Mohit Natani', 28, 70000, 'Python Developer'), ('Kanchan Sharma', 25, 60000, 'Digital Marketer'), ('Radhika Rathore', 26, 52500, 'SEO Manager')], dtype=t) #Get third row data print(arr[2]) #Get designation of Mohit Natani print(arr[0]['designation'])
Output of the above code
('Radhika Rathore', 26, 52500, 'SEO Manager') Python Developer
You need to specify two things to access an element-
import numpy as np t = np.dtype([('productname', 'U30'), ('numberofquantity', 'uint8'), ('price', 'float32'), ('inStock', 'bool')]) arr = np.array([('Samsung Galaxy S2', 23, 15000, True), ('Apple iPhone X', 56, 80000, True), ('Motorola M20', 31, 11500, False)], dtype=t) #Get the name of mobile from the first row print(arr[0]['productname']) #Get second row data print(arr[1]) #Get all product names print(arr['productname']) #Get the name of mobile from the second row print(arr[1][0])
Output of the above program
Samsung Galaxy S2 ('Apple iPhone X', 56, 80000., True) ['Samsung Galaxy S2' 'Apple iPhone X' 'Motorola M20'] Apple iPhone X
arr[0]['productname']
will return then mobile name from the first row- Samsung Galaxy S2
arr[1]
will return the second row- ('Apple iPhone X', 56, 80000., True)
arr['productname']
will return a complete list of product name- ['Samsung Galaxy S2' 'Apple iPhone X' 'Motorola M20']
arr[1][0]
will provide the mobile name from the second row- Apple iPhone X