I wasn’t able to find a way to get the sprites at runtime, but in the editor you can do this (you’d have to store the array in a scriptable object or a monobehaviour):
using System.Linq;
...
Object[] objects = AssetDatabase.LoadAllAssetRepresentationsAtPath(AssetDatabase.GetAssetPath(sourceTexture));
Sprite[] sprites = objects.Select(x=>(x as Sprite)).Where(x=>x.name.Contains(sourceTexture.name+"_")).ToArray();
You don’t refer to sprites by number or anything like that, without making an array first. When you use the sprite editor in Unity to make sprites from an atlas, it creates individual sprites, which are grouped under the texture. You can then make a public Sprite[ ] array, and drag the sprites onto that. (And no, not one at a time…lock the inspector, select all the sprites and drag them, then unlock the inspector.)