code: def from_index_amount(cls, idx, amount):
          
          if np.array(idx).ndim == 0:
              v = np.zeros(6)
              v[idx] = amount
              return cls.from_voigt(v)
          elif np.array(idx).ndim == 1:
              v = np.zeros((3, 3))
              for i in itertools.permutations(idx):
                  v[i] = amount
              return cls(v)
          else:
              raise ValueError("Index must either be 2-tuple or integer "
                               "corresponding to full-tensor or voigt index")
docs: Like Deformation.from_index_amount, except generates
          a strain from the zero 3x3 tensor or voigt vector with
          the amount specified in the index location.  Ensures
          symmetric strain.
  
          Args:
              idx (tuple or integer): index to be perturbed, can be voigt or
                  full-tensor notation
              amount (float): amount to perturb selected index