На всякий случай, кто-то посещает этот вопрос в 2017 году или позже и ищет легкий для запоминания способ, вот подробное сообщение в блоге по Доступ к вложенным объектам в JavaScript без бамбука с помощью
Невозможно прочитать свойство «foo» неопределенной ошибки
Самый простой и самый чистый способ - использовать шаблон доступа к вложенным объектам Oliver Steele
const name = ((user || {}).personalInfo || {}).name;
. В этих обозначениях вы никогда не столкнетесь с
Невозможно прочитать свойство 'name' неопределенного .
Вы в основном проверяете, существует ли пользователь, если нет, вы создаете пустой объект «на лету». Таким образом, ключ следующего уровня будет всегда доступен из объекта, который существует, или пустого объекта, но никогда из неопределенного.
Чтобы иметь доступ к вложенным массивам, вы можете написать собственный массив, уменьшающий использование.
const getNestedObject = (nestedObj, pathArr) => {
return pathArr.reduce((obj, key) =>
(obj && obj[key] !== 'undefined') ? obj[key] : undefined, nestedObj);
}
// pass in your object structure as array elements
const name = getNestedObject(user, ['personalInfo', 'name']);
// to access nested array, just pass in array index as an element the path array.
const city = getNestedObject(user, ['personalInfo', 'addresses', 0, 'city']);
// this will return the city from the first address item.
Существует также отличная библиотека обработки минимального типа typy , который делает все это для вас.
Это то, что matplotlib.pyplot.scatter
для.
В качестве быстрого примера:
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
t = np.linspace(0, 2 * np.pi, 20)
x = np.sin(t)
y = np.cos(t)
plt.scatter(t,x,c=y)
plt.show()
[/g0]
Если вы хотите построить линии вместо точек, см. этот пример , измененный здесь, чтобы отобразить хорошие / плохие точки, представляющие функцию как черный / красный, в зависимости от ситуации:
def plot(xx, yy, good):
"""Plot data
Good parts are plotted as black, bad parts as red.
Parameters
----------
xx, yy : 1D arrays
Data to plot.
good : `numpy.ndarray`, boolean
Boolean array indicating if point is good.
"""
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
from matplotlib.colors import from_levels_and_colors
from matplotlib.collections import LineCollection
cmap, norm = from_levels_and_colors([0.0, 0.5, 1.5], ['red', 'black'])
points = np.array([xx, yy]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lines = LineCollection(segments, cmap=cmap, norm=norm)
lines.set_array(good.astype(int))
ax.add_collection(lines)
plt.show()