python: используя np.vectorize и np.meshgrid, получите строгий список массива - непонимание

Поскольку этот поток наткнулся, я собрал несколько точек для новых читателей в this.

Как определено значение this?

Мы используем это подобно тому, как мы используем местоимения в естественных языках, таких как английский: «Джон работает быстро, потому что он пытается поймать поезд». Вместо этого мы могли бы написать «... Джон пытается поймать поезд ».

var person = {    
    firstName: "Penelope",
    lastName: "Barrymore",
    fullName: function () {

    // We use "this" just as in the sentence above:
       console.log(this.firstName + " " + this.lastName);

    // We could have also written:
       console.log(person.firstName + " " + person.lastName);
    }
}

this не присваивается значение, пока объект не вызовет функцию, в которой он определен. В глобальной области действия все глобальные переменные и функции определяются на объекте window. Следовательно, this в глобальной функции относится к (и имеет значение) глобальный объект window.

Когда use strict, this в глобальном и в анонимных функциях, не связанных с каким-либо объектом, имеет значение undefined.

Ключевое слово this g0] наиболее непонятно , когда: 1) мы используем метод, который использует this, 2) мы назначаем метод, который использует this для переменной, 3) функция, которая использует this, передается как функция обратного вызова и 4) this используется внутри замыкания - внутренней функции. (2)

table [/g10]

Что содержит будущее

Определено в сценарии ECMA 6 , стрелка- функции принимают привязку this из охватывающей (функциональной или глобальной) области.

function foo() {
     // return an arrow function
     return (a) => {
     // `this` here is lexically inherited from `foo()`
     console.log(this.a);
  };
}
var obj1 = { a: 2 };
var obj2 = { a: 3 };

var bar = foo.call(obj1);
bar.call( obj2 ); // 2, not 3!

Хотя функции-стрелки предоставляют альтернативу использованию bind(), важно отметить, что они по существу отключают традиционный механизм this в пользу более широкого понимания лексического охвата. (1)


Ссылки:

  1. this & amp; Object Prototypes, автор Kyle Simpson. © 2014 Getify Solutions.
  2. javascriptissexy.com - http://goo.gl/pvl0GX
  3. Ангус Кролл - http: // goo .gl / Z2RacU

-1
задан sun0727 13 July 2018 в 16:42
поделиться

1 ответ

Почему он не срезается?

A numpy.meshgrid возвращает список из numpy.ndarray .

Пример

Предположим, вы хотите создать meshgrid из следующих x и y:

x = np.random.randint(10, size=(5))
y = np.random.randint(10, size=(5))
meshgrid = np.meshgrid(x,y)

. Вы получили бы что-то вроде:

[array([[7, 1, 1, 0, 0],
        [7, 1, 1, 0, 0],
        [7, 1, 1, 0, 0],
        [7, 1, 1, 0, 0],
        [7, 1, 1, 0, 0]]), array([[0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0],
        [3, 3, 3, 3, 3],
        [2, 2, 2, 2, 2],
        [7, 7, 7, 7, 7]])]

Но это список, и список не имеет формы атрибута (AttributeError: 'list' object has no attribute 'shape').

Затем как отрезать это?

Если вам нужно нарезать список как матрицу numpy, преобразуйте ее в массив numpy:

numpy_meshgrid = np.array(meshgrid)

Скорее всего, результат вашей функции func также требует преобразования в numpy.ndarray.

Теперь вы можете нарезать все, что вы хотите:

array= np.random.randint(10, size=(3, 4, 2, 2))
slice = array[:,:,0,0]

И результат:

array([[6, 7, 5, 3],
   [1, 6, 0, 5],
   [4, 5, 6, 9]])
0
ответ дан Luca Cappelletti 17 August 2018 в 12:42
поделиться
  • 1
    Спасибо за ваш ответ, я обновил свой вопрос. Когда я использую type(), почему я получаю type <class 'numpy.ndarray'> – sun0727 13 July 2018 в 14:27
  • 2
    Я добавил нарезку, которая вам нужна. – Luca Cappelletti 13 July 2018 в 14:44
  • 3
    если я использую array[:,:,0,0], он возвращает IndexError: too many indices for array – sun0727 13 July 2018 в 14:54
  • 4
    Если функция func возвращает массив с формой (3, 4, 2, 2), это решение будет работать. Если вы предоставите минимальный рабочий пример func, мы сможем помочь вам в этом. – Luca Cappelletti 13 July 2018 в 14:57
  • 5
    Трудно дать ME ... Я думал, что проблема может быть вызвана np.vectorize – sun0727 13 July 2018 в 15:03
Другие вопросы по тегам:

Похожие вопросы: