При попытке объединить два arays у меня проблема с типом в numpy

#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. Используйте это, только если вы перейдете к modify x , как с 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.