You can loop over every vertex after initializing different arrays for each of your vertex color layers. You can parse the init data from a file (eg .csv) with python but this is not covered in this answer.
import bpy
import bmesh
obj = bpy.context.selected_objects[0] # Get the currently selected object
vertex_colors = obj.data.vertex_colors
while vertex_colors:
vertex_colors.remove(vertex_colors[0]) # Remove all vertex color layers form the mesh data
bm = bmesh.new() # Create new bmesh object
bm.from_mesh(obj.data) # Init the bmesh with the current mesh
verts_count = len(bm.verts) # Get the number of vertices in the mesh
# Not obligatory, I just use this to populate the vertex color layers)
# This dictionary will map each vertex color layer name to the data for each vertex
data_layers = {
'Temperature': # vertex color layer name 1
[
(1, 0, 0, 1), # Color of vertex index 0
(0, 1, 0, 1), # Color of vertex index 1
(0, 0, 1, 1), # Color of vertex index 2
(1, 1, 1, 1), # Color of vertex index 3...
],
'Velocity': # vertex color layer name 2
[(i / verts_count, i / verts_count, i / verts_count, 1) for i in range(verts_count)],
'Salinity': # vertex color layer name 3
[(i / verts_count, 1 - (i / verts_count), 0.5, 1) for i in range(verts_count)],
}
color_layers = {}
for layer_name in data_layers:
# Create the vertex color layers and store them in a dictionary for easy access by name
color_layers[layer_name] = bm.loops.layers.color.new(layer_name)
for layer_name, layer in color_layers.items():
# Loop over each vertex color layer
for v in bm.verts:
# Loop over every vertex
for loop in v.link_loops:
# Loop over every loop of this vertex (the corners of the faces in which this vertex exists)
try:
loop[layer] = data_layers[layer_name][v.index]
# Get the value from the init dictionary
except IndexError:
loop[layer] = (1, 0, 1, 1)
# Set a placeholder (magenta) value if the mapping array is not long enough
bm.to_mesh(obj.data) # Give the data back to the actual mesh
Then to acces the vertex colors in your material, use the vertex color node :

Note that the "Temperature" layer was initialized with only 4 values, so only a few vertices in the right eye got colored and the rest of the vertices got mapped to a magenta color.
Also note that you can store 4 values in each of the 4 channels of your color. Example with the 'Velocity' vertex color layer used before :

how to modify / customize a coloramp?,Why is my color map gradient (by node xyz value) working for x and y but not z?,how to use external values as input for color ramp shader node?.. these are all different questions, with different answers and no overlap of the questions in each.. in fact I had overlap before and others who helped on those questions suggested I separate them out and ask individually.. I understand whee you're coming from but I don't know how I can ask these questions without asking multiple questions at once – Derek Eden Apr 18 '20 at 17:06