$$\renewcommand\AA{\unicode{x212B}}$$

# Python in Mantid: Solution 4¶

All the data for these solutions can be found in the TrainingCourseData on the Downloads page.

## Manipulating data arrays¶

### A - Create a MatrixWorkspace¶

# import mantid algorithms, numpy and matplotlib
from mantid.simpleapi import *
import matplotlib.pyplot as plt
import numpy as np

ws = Rebin(InputWorkspace=ws, Params=1e4)
nbins = ws.blocksize()
print(nbins)

xMin = ws.getDimension(0).getMinimum()
xMax = ws.getDimension(0).getMaximum()
xRange = [xMin, xMax]

''' ----------- Part One Solution using nested loop and implementing a max condition by hand ----------- '''
new_y = []
for i in range(ws.getNumberHistograms()):
maxY = -1
# Inner loop. Loop over bins.
for j in range(nbins):
current = y[j]
if current > maxY:
maxY = current
new_y.append(maxY)

solution_1 = CreateWorkspace(DataY=new_y, DataX=xRange, NSpec=ws.getNumberHistograms())

''' ----------- Part One Solution  using nested loop and implementing an inbuild max function ----------- '''
new_y = []
for i in range(ws.getNumberHistograms()):
maxY = -1.0
# Inner loop. Loop over bins.
for j in range(nbins):
maxY = max(y[j], maxY) # Using the input Max method.
new_y.append(maxY)

solution_2 = CreateWorkspace(DataY=new_y, DataX=xRange, NSpec=ws.getNumberHistograms())

''' ----------- Part One Solution  using single loop and numpy max function ----------- '''
new_y = []
for i in range(ws.getNumberHistograms()):
maxY = np.max(y)
new_y.append(maxY)

solution_3 = CreateWorkspace(DataY=new_y, DataX=xRange, NSpec=ws.getNumberHistograms())

### B - Create a TableWorkspace¶

ws = Rebin(InputWorkspace=ws, Params=1e4)
nbins = ws.blocksize()
print(nbins)

xMin = ws.getDimension(0).getMinimum()
xMax = ws.getDimension(0).getMaximum()
xRange = [xMin, xMax]

table = CreateEmptyTableWorkspace()