Я пытаюсь создать случайный массив из 0 и 1, и я получаю ошибку: несоответствие формы: объекты не могут быть переданы в одну форму. Ошибка, похоже, происходит в строке randints = np.random.binomial(1,p,(n,n))
. Вот функция:Ошибка формы «несоответствие формы» с использованием numpy в python
import numpy as np
def rand(n,p):
'''Generates a random array subject to parameters p and N.'''
# Create an array using a random binomial with one trial and specified
# parameters.
randints = np.random.binomial(1,p,(n,n))
# Use nested while loops to go through each element of the array
# and assign True to 1 and False to 0.
i = 0
j = 0
rand = np.empty(shape = (n,n),dtype = bool)
while i < n:
while j < n:
if randints[i][j] == 0:
rand[i][j] = False
if randints[i][j] == 1:
rand[i][j] = True
j = j+1
i = i +1
j = 0
# Return the new array.
return rand
print rand
Когда я запускаю его сам по себе, он возвращает <function rand at 0x1d00170>
. Что это значит? Как преобразовать его в массив, с которым можно работать в других функциях?
Какие версии python и numpy вы используете? У вашего кода, опубликованного выше, есть некорректная информация в 'i = i + 1' ... – Jaime
Причина, по которой он печатает' 'при запуске этой программы, потому что ваша строка' print rand' печатается объект функции. Вам нужно вызвать функцию. Попробуйте: 'print rand (4,2)' вместо этого. –
Wilduck