numpy деление массива превращает все элементы в нули - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь разделить каждый элемент в каждой строке матрицы по индексу, я создал соответствующую строку и заполнил ее от 1 до 1000, однако, когда я делаю следующее:

d = data[0]/np.arange(1,1001)

data[0] = data[0] / np.arange(1,1001)

печать d дает правильную калькуляцию:

[1.         0.5        0.33333333 0.25       0.2        0.33333333
 0.28571429 0.25       0.22222222 0.2        0.18181818 0.16666667
 0.23076923 0.21428571 0.2        0.25       0.29411765 0.33333333
 0.31578947 0.35       0.38095238 0.40909091 0.39130435 0.375
 0.4        0.42307692 0.40740741 0.42857143 0.4137931  0.43333333
]

при печати data[0] печатает ряд нулей:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]

1 Ответ

1 голос
/ 01 апреля 2020

Как вы сказали, data [0] является массивом int, поэтому результат деления снова приводится к int, поэтому вы получаете все 0.

Хотя d не является массивом целых чисел, поэтому результат деления приводится к плавающей точке.

data = np.ones((2,1000)).astype(np.int8)
d = data[0]/np.arange(1,1001)
data[0] = data[0] / np.arange(1,1001)

Этот пример примера приведет к тому же результату:

  • data [0] будет массивом нулей (за исключением элемента с индексом 0, который будет 1)

  • , а d будет массивом результатов с плавающей запятой деления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...