The girl is hospitalized in critical but stable condition.
Witnesses say the mother threw the child in the river before jumping in herself.
The pair were spotted Tuesday morning bobbing in the water by passers-by who came across an empty stroller on a pier.
Maryann Ford said she was walking with her 3-year-old godson and her friend Lane Beauchamp on a pedestrian pier that juts out into the Hudson when she noticed the empty stroller.
Ford said she instinctively looked at the water between the pier and the remnants of an abandoned dock. That's when Ford, who lives nearby, and Beauchamp spotted the woman and the child, both fully dressed, in the water.
"It's so disturbing," Ford said. "I just can't get it out of my head - seeing her head go down and seeing that baby's head go under, and at one point seeing both go down. That's really shaken me."
Ford said they called out to the woman and she waved back at them.
"She wasn't dog-paddling toward the shore," Ford said. "She was dog-paddling sort of farther out."
Beauchamp, who also lives in the neighborhood and called 911, said he never saw flailing arms or anything dramatic but the woman seemed to intentionally move away from the shore. The woman and the toddler were bobbing up and down in the water as they got farther out.
"It was almost an eery calm about it, which is also why something didn't seem right," he said.
Beauchamp said the woman let her daughter go and they were about 10 to 20 feet apart.
About 20 minutes after rescuers plucked the two from the water, Ford and Beauchamp ran into a man who identified himself as the toddler's father.
"I said to the guy, 'What happened?"' Ford said. "He said: 'Nothing. I don't know. There were no issues."'
Rescuers were called to an area of the river near 82nd Street shortly after 11:30 a.m. The pair were pulled out of the river about 10 blocks south of there. The fire department rescued the woman, who was face-down in the water, and police rescued the child, who was face-up. Both were resuscitated.
It wasn't immediately clear how long they had been in the water, which was around 50 degrees, the Coast Guard said. The fire department said about 15 minutes lapsed between the time of the call and the transport.