code: def _learn(
               permanences, rng,
               activeCells, activeInput, growthCandidateInput,
               sampleSize, initialPermanence, permanenceIncrement,
               permanenceDecrement, connectedPermanence):
      permanences.incrementNonZerosOnOuter(
        activeCells, activeInput, permanenceIncrement)
      permanences.incrementNonZerosOnRowsExcludingCols(
        activeCells, activeInput, -permanenceDecrement)
      permanences.clipRowsBelowAndAbove(
        activeCells, 0.0, 1.0)
      if sampleSize == -1:
        permanences.setZerosOnOuter(
          activeCells, activeInput, initialPermanence)
      else:
        existingSynapseCounts = permanences.nNonZerosPerRowOnCols(
          activeCells, activeInput)
        maxNewByCell = numpy.empty(len(activeCells), dtype="int32")
        numpy.subtract(sampleSize, existingSynapseCounts, out=maxNewByCell)
        permanences.setRandomZerosOnOuter(
          activeCells, growthCandidateInput, maxNewByCell, initialPermanence, rng)