2
$\begingroup$

I have a question about the list of points - in the list below I would like to change the 3rd value of each point to another - like this: {x, y, 0} to (x, y, 0.08}

Y09POINTS={{0.028684, 0.7, 0.}, {0.0286303, 0.706848, 0.}, {0.0282852, 0.75, 
  0.}, {0.0287183, 0.793591, 0.}, {0.0287511, 0.8, 0.}, {0.03, 
  0.832036, 0.}, {0.0309524, 0.85, 0.}, {0.04, 0.880317, 
  0.}, {0.0479972, 0.9, 0.}, {0.05, 0.902169, 0.}, {0.0506499, 
  0.903249, 0.}, {0.06, 0.917023, 0.}, {0.0634705, 0.917352, 
  0.}, {0.07, 0.916915, 0.}, {0.0727888, 0.913944, 0.}, {0.08, 
  0.905785, 0.}, {0.0814746, 0.907373, 0.}, {0.09, 0.916915, 
  0.}, {0.0933178, 0.916589, 0.}, {0.1, 0.917023, 0.}, {0.10252, 
  0.912598, 0.}, {0.11, 0.902169, 0.}, {0.110335, 0.901676, 
  0.}, {0.112003, 0.9, 0.}, {0.117299, 0.886497, 0.}, {0.12, 0.880317,
   0.}, {0.123646, 0.868231, 0.}, {0.129048, 0.85, 0.}, {0.129185, 
  0.845923, 0.}, {0.13, 0.832036, 0.}, {0.130918, 0.80459, 
  0.}, {0.131249, 0.8, 0.}, {0.131673, 0.758365, 0.}, {0.131715, 0.75,
   0.}, {0.13137, 0.706848, 0.}, {0.131316, 0.7, 0.}, {0.131307, 
  0.693466, 0.}, {0.13115, 0.65, 0.}, {0.130924, 0.604621, 
  0.}, {0.13088, 0.6, 0.}, {0.130787, 0.553935, 0.}, {0.130798, 0.55, 
  0.}, {0.130773, 0.503866, 0.}, {0.130751, 0.5, 0.}, {0.130775, 
  0.453875, 0.}, {0.130798, 0.45, 0.}, {0.130893, 0.404463, 
  0.}, {0.13088, 0.4, 0.}, {0.130924, 0.395379, 0.}, {0.13115, 0.35, 
  0.}, {0.131307, 0.306534, 0.}, {0.131316, 0.3, 0.}, {0.13165, 
  0.258251, 0.}, {0.131715, 0.25, 0.}, {0.131282, 0.206409, 
  0.}, {0.131249, 0.2, 0.}, {0.130918, 0.19541, 0.}, {0.13, 0.167964, 
  0.}, {0.129048, 0.15, 0.}, {0.12, 0.119683, 0.}, {0.117299, 
  0.113503, 0.}, {0.112003, 0.1, 0.}, {0.110335, 0.0983238, 
  0.}, {0.11, 0.097831, 0.}, {0.10935, 0.0967508, 0.}, {0.1, 
  0.0829773, 0.}, {0.0965295, 0.0826475, 0.}, {0.09, 0.0830853, 
  0.}, {0.0814746, 0.0926271, 0.}, {0.08, 0.094215, 0.}, {0.0785254, 
  0.0926271, 0.}, {0.07, 0.0830853, 0.}, {0.0634705, 0.0826475, 
  0.}, {0.06, 0.0829773, 0.}, {0.0574805, 0.0874023, 0.}, {0.05, 
  0.097831, 0.}, {0.0496648, 0.0983238, 0.}, {0.0479972, 0.1, 
  0.}, {0.04, 0.119683, 0.}, {0.0363538, 0.131769, 0.}, {0.0309524, 
  0.15, 0.}, {0.0308154, 0.154077, 0.}, {0.03, 0.167964, 
  0.}, {0.029082, 0.19541, 0.}, {0.0287511, 0.2, 0.}, {0.0283271, 
  0.241635, 0.}, {0.0282852, 0.25, 0.}, {0.0286303, 0.293152, 
  0.}, {0.028684, 0.3, 0.}, {0.028842, 0.34421, 0.}, {0.0288502, 0.35,
   0.}, {0.0290759, 0.395379, 0.}, {0.0291196, 0.4, 0.}, {0.029213, 
  0.446065, 0.}, {0.0292019, 0.45, 0.}, {0.0292269, 0.496134, 
  0.}, {0.0292492, 0.5, 0.}, {0.0292249, 0.546125, 0.}, {0.0292019, 
  0.55, 0.}, {0.0291073, 0.595537, 0.}, {0.0291196, 0.6, 
  0.}, {0.0289033, 0.644517, 0.}, {0.0288502, 0.65, 0.}, {0.0286931, 
  0.693466, 0.}, {0.028684, 0.7, 0.}}

If he uses the ReplacePart function, the effect is not what it should be (i want) - it's below.

After the whole operation, I would like to view the points using ListPlot3D.

Could someone help me with this issue?

ReplacePart[Y09POINTS, 3 -> 0.08]
{{0.028684, 0.7, 0.}, {0.0286303, 0.706848, 0.}, 0.08, {0.0287183, 
  0.793591, 0.}, {0.0287511, 0.8, 0.}, {0.03, 0.832036, 
  0.}, {0.0309524, 0.85, 0.}, {0.04, 0.880317, 0.}, {0.0479972, 0.9, 
  0.}, {0.05, 0.902169, 0.}, {0.0506499, 0.903249, 0.}, {0.06, 
  0.917023, 0.}, {0.0634705, 0.917352, 0.}, {0.07, 0.916915, 
  0.}, {0.0727888, 0.913944, 0.}, {0.08, 0.905785, 0.}, {0.0814746, 
  0.907373, 0.}, {0.09, 0.916915, 0.}, {0.0933178, 0.916589, 
  0.}, {0.1, 0.917023, 0.}, {0.10252, 0.912598, 0.}, {0.11, 0.902169, 
  0.}, {0.110335, 0.901676, 0.}, {0.112003, 0.9, 0.}, {0.117299, 
  0.886497, 0.}, {0.12, 0.880317, 0.}, {0.123646, 0.868231, 
  0.}, {0.129048, 0.85, 0.}, {0.129185, 0.845923, 0.}, {0.13, 
  0.832036, 0.}, {0.130918, 0.80459, 0.}, {0.131249, 0.8, 
  0.}, {0.131673, 0.758365, 0.}, {0.131715, 0.75, 0.}, {0.13137, 
  0.706848, 0.}, {0.131316, 0.7, 0.}, {0.131307, 0.693466, 
  0.}, {0.13115, 0.65, 0.}, {0.130924, 0.604621, 0.}, {0.13088, 0.6, 
  0.}, {0.130787, 0.553935, 0.}, {0.130798, 0.55, 0.}, {0.130773, 
  0.503866, 0.}, {0.130751, 0.5, 0.}, {0.130775, 0.453875, 
  0.}, {0.130798, 0.45, 0.}, {0.130893, 0.404463, 0.}, {0.13088, 0.4, 
  0.}, {0.130924, 0.395379, 0.}, {0.13115, 0.35, 0.}, {0.131307, 
  0.306534, 0.}, {0.131316, 0.3, 0.}, {0.13165, 0.258251, 
  0.}, {0.131715, 0.25, 0.}, {0.131282, 0.206409, 0.}, {0.131249, 0.2,
   0.}, {0.130918, 0.19541, 0.}, {0.13, 0.167964, 0.}, {0.129048, 
  0.15, 0.}, {0.12, 0.119683, 0.}, {0.117299, 0.113503, 
  0.}, {0.112003, 0.1, 0.}, {0.110335, 0.0983238, 0.}, {0.11, 
  0.097831, 0.}, {0.10935, 0.0967508, 0.}, {0.1, 0.0829773, 
  0.}, {0.0965295, 0.0826475, 0.}, {0.09, 0.0830853, 0.}, {0.0814746, 
  0.0926271, 0.}, {0.08, 0.094215, 0.}, {0.0785254, 0.0926271, 
  0.}, {0.07, 0.0830853, 0.}, {0.0634705, 0.0826475, 0.}, {0.06, 
  0.0829773, 0.}, {0.0574805, 0.0874023, 0.}, {0.05, 0.097831, 
  0.}, {0.0496648, 0.0983238, 0.}, {0.0479972, 0.1, 0.}, {0.04, 
  0.119683, 0.}, {0.0363538, 0.131769, 0.}, {0.0309524, 0.15, 
  0.}, {0.0308154, 0.154077, 0.}, {0.03, 0.167964, 0.}, {0.029082, 
  0.19541, 0.}, {0.0287511, 0.2, 0.}, {0.0283271, 0.241635, 
  0.}, {0.0282852, 0.25, 0.}, {0.0286303, 0.293152, 0.}, {0.028684, 
  0.3, 0.}, {0.028842, 0.34421, 0.}, {0.0288502, 0.35, 
  0.}, {0.0290759, 0.395379, 0.}, {0.0291196, 0.4, 0.}, {0.029213, 
  0.446065, 0.}, {0.0292019, 0.45, 0.}, {0.0292269, 0.496134, 
  0.}, {0.0292492, 0.5, 0.}, {0.0292249, 0.546125, 0.}, {0.0292019, 
  0.55, 0.}, {0.0291073, 0.595537, 0.}, {0.0291196, 0.6, 
  0.}, {0.0289033, 0.644517, 0.}, {0.0288502, 0.65, 0.}, {0.0286931, 
  0.693466, 0.}, {0.028684, 0.7, 0.}}
$\endgroup$
  • 2
    $\begingroup$ Try TranslationTransform[{0, 0, 0.08}][Y09POINTS]. $\endgroup$ – J. M. will be back soon Oct 14 '18 at 17:37
  • $\begingroup$ Thank you @ J. M. is computer-less Method works - if I have a larger part of the results, I will also test the performance and I will refer :) $\endgroup$ – Arek Oct 14 '18 at 17:46
3
$\begingroup$
# + {0., 0., 0.08} & /@ Y09POINTS

Or, though slower,

# + ConstantArray[{0., 0., 0.08}, Length@#] &@Y09POINTS
$\endgroup$
4
$\begingroup$

You can try this instead:

a = Y09POINTS;
a[[All,3]] = 0.08;

Then a contains the desired result.

You can also use ReplacePart[p, {_, 3} -> 0.08] but I would not suggest that; it is pretty slow (slower by two orders of mangnitude).

$\endgroup$
  • $\begingroup$ Thank you @Henrik Schumacher Both methods work - if I have a larger part of the results, I will also test the performance and I will refer :) $\endgroup$ – Arek Oct 14 '18 at 17:45
3
$\begingroup$
ArrayFlatten@{{Y09POINTS[[All, ;; 2]], 0.08}}
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.