Как умножить все элементы списка до окончательного ответа Python NumPy не работает - PullRequest
0 голосов
/ 27 июня 2018

Извините за это. Я новичок в Python и занимаюсь проблемой кода leetcode, и в настоящее время я пытаюсь умножить все числа в списке вместе, чтобы получить окончательный результат. Вот мой код:

import numpy 

class Solution:
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        arr = []

        for i in range(len(nums)):
            temp = nums[:i] + nums[i + 1 : len(nums)]
            result = numpy.prod(temp)
            arr.append(result)
        return arr

Однако я получаю эту ошибку:

Line 56: Exception: Type <class 'numpy.int64'>: Not implemented

Есть ли другой способ умножения всех элементов в списке и сохранения в значении.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Это то, что я запускал в Spyder 3.5:

import numpy

class Solution:
def productExceptSelf(self, nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    arr = []

    for i in range(len(nums)):
        temp = nums[:i] + nums[i+1 : len(nums)]
        result = numpy.prod(temp)
        arr.append(result)
    return arr

a = [1, 2, 3, 4, 5, 6, 7]
solutionObject = Solution()
pES = solutionObject.productExceptSelf(a)
print(pES)

Это вывод, который я получил:

[5040, 2520, 1680, 1260, 1008, 840, 720]

Код отлично работает со Spyder.

0 голосов
/ 27 июня 2018

Как и в ответе @ Pranav, я запустил ваш код со случайно сгенерированным списком, и он успешно работал. Обратите внимание, что если список превышает 37 элементов, то numpy.prod () начнет сбоить и вернет 0, так как вычисление превысило предельный размер типа данных. Вы можете получить довольно большой довольно быстро, используя numpy.prod (). Посмотрев на ошибку, дважды проверьте, что ваши элементы списка целые или плавающие.

import numpy 
import random

class Solution:
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        arr = []

        for i in range(len(nums)):
            temp = nums[:i] + nums[i + 1 : len(nums)]
            result = numpy.prod(temp)
            arr.append(result)
        return arr

x = random.sample(range(0,100), 37)
answer = Solution()
product = answer.productExceptSelf(x)
print(product)

Не могли бы вы предоставить нам список, который вы используете при тестировании функции? Это поможет с воспроизведением вашей ошибки.

0 голосов
/ 27 июня 2018

Попробуйте преобразовать числа обратно в целое число:

return list(map(int, arr))

Или альтернативно:

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