#python #python-3.x #numpy
#python #python-3.x #numpy
Вопрос:
Когда я пытаюсь:
data_f = hstack([data,Ki])
Я получаю:
Ошибка типа: объект ‘list’ не вызывается.
Я тщетно «гуглил» безрезультатно. Что я пропустил?
Я успешно создал два массива, которые хочу объединить:
data = []
data = np.vstack([data1,data2,data3,data4,data5,data6,data7,data8,data9,data10])
A = []
A = data[:,1]
Ki = []
Ki = np.exp((1000*A)/(Rcal*Tk))
name_s = name '_Ki'
np.savetxt(name_s,[A],newline='n',delimiter = ' ')
data_f = []
hstack = []
data_f = hstack([data,Ki])
Комментарии:
1. Функция
callable
иcalled
с()
, как вы делаете сhstack(...)
. Но вы определяетеhstack=[]
список.2. Все эти
x=[]
операторы не нужны в Python. Используйте это, только если вы перейдете к modifyx
, как сx.append('foobar')
. В Python переменные не нужно «инициализировать». Просто назначьте реальные, полезные объекты, как с вашимdata=np.vstack(...)
. Почему вы использовалиnp.vstack
, но неnp.hstack
использовали?3. Спасибо за ваш ответ. Я использовал vstack для успешного создания структуры данных. Проблема связана с использованием hstack (последняя строка — фрагмент кода выше).
4. Я изменил последнюю строку на чтение data_f = np.hstack([data,K1]). Теперь ошибка «Ошибка значения: все входные массивы должны иметь одинаковое количество измерений».
5. Итак, каковы размеры 2 входных данных
data
иK1
? Первое, что нужно сделать, когда вы получаете ошибки в отношении размеров и формы, — это проверить (распечатать) форму массивов.
Ответ №1:
Пожалуйста, прочтите подробное руководство, где они четко объясняют, что hstack()
требуется кортеж ndarrays аналогичной формы. Вы этого не предоставляете.
Внимательно изучите data
amp; Ki
, чтобы убедиться, что они похожи .shape
Редактировать
Вот пример вызова hstack()
:
>>> a = np.array(range(3)).reshape(3, 1)
>>> b = np.array(range(12)).reshape(3, 4)
>>> a.shape, b.shape
((3, 1), (3, 4))
>>> np.hstack((a, b))
array([[ 0, 0, 1, 2, 3],
[ 1, 4, 5, 6, 7],
[ 2, 8, 9, 10, 11]])
Обратите внимание, что создание a
просто np.array(range(3))
не сработает.
Чтобы понять, почему, посмотрите на разницу между .shape
этими выражениями.
Комментарии:
1. Спасибо за ваше эрудированное объяснение. В моем первоначальном вопросе говорилось, что данные представляют собой массив float64 с размерами (100,40, а Ki — это массив float64 с размерами (100,1). Возможно, за 80 лет чтения я не понял, о чем говорится в ссылке. Я действительно не вижу, каким может быть решение проблемы.
2. Возможно, на вашем локальном диске C: есть какой-то текст, который говорит об этом, но я не могу его прочитать. Конечно, вы не указывали на это в своем вопросе.
3. Что ж, это был краснолицый удар по лбу! Стек столбцов решил проблему, благодаря numpy-user-1.19.1.pdf.