#python #arrays #numpy
#python #массивы #numpy
Вопрос:
Я новичок, поэтому этот вопрос может быть несколько очевидным для кого-то.
import numpy as np
print("array")
array = np.arange(8)
matrix = np.array.reshape(2,4)
print(matrix)
Результат таков.
array
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-88e5e9409344> in <module>
2 print("array")
3 array = np.arange(8)
----> 4 matrix = np.array.reshape(2,4)
5 print(matrix)
AttributeError: 'builtin_function_or_method' object has no attribute 'reshape'
Я не знаю, почему это не работает.
Комментарии:
1. Похоже, что вы вызываете
reshape
np.array
функцию , которая используется для создания нового массива. Вы создали свою переменнуюarray
. Попробуйте использовать эту переменную вместоnp.array
:matrix = array.reshape(2,4)
2. @UeliDeSchwert Спасибо! Это действительно работает! Нет ли необходимости ставить ‘np’ перед ‘array’? Почему?
3.
np.
Идентифицирует функции вnumpy
модуле. Существуетnp.array
функция. И чтобы уменьшить вашу путаницу, измените имена переменных. Напримерarr = np.arange(3)
, илиx = np.arange(6).reshape(2,3)
. Избегайте имен, которые слишком похожи на существующие функции.
Ответ №1:
Похоже, вы вызываете reshape on np.array
, функцию, которая используется для создания нового массива.
Вы уже создали свою переменную array
. Попробуйте использовать эту переменную вместо np.array
:
import numpy as np
print("array")
array = np.arange(8)
matrix = array.reshape(2,4) # <-- remove the "np." to access a function on your array
print(matrix)
Почему это так?
myArray = np.array(k)
это функция, которая создает новый массив NumPy, используя входные k
данные . Результат этой функции возвращается и сохраняется в переменной (в моем случае myArray
).
В этом массиве вы можете вызывать функции для управления им (например reshape
).
Что вы пытались сделать: Вы использовали np.array
(помните, функцию, которая создает массив). Вы не использовали свой массив, а вместо этого использовали указатель на функцию.
Комментарии:
1. то есть вы имеете в виду, что, поскольку я уже создал массив, мне не нужно вводить ‘np’ для создания матрицы?
2. Я обновил свой ответ. Возможно, это делает его более понятным.