我在python中知道的是我可以写这样的东西
blabla = Classname().somefunctions()
但在这种情况下," np.arange"和"重塑"是功能,它让我困惑,因为" np.arange"是一个函数,被视为一个类。问题是这怎么可能?
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
答案 0 :(得分:1)
Python是一种面向对象的语言,其中每个变量都是一个对象。 np.arange
returns ndarray
个对象。然后,您可以调用reshape
对象的ndarray
方法。
import numpy as np
a = np.arange(15)
type(a)
Out[148]: numpy.ndarray
a
Out[149]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
a = a.reshape(3, 5)
type(a)
Out[151]: numpy.ndarray
a
Out[152]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
答案 1 :(得分:0)
我认为你混淆了这种行为:
blabla = Classname().somefunctions()
通过调用类somefunctions()
中的方法Classname()
将变量返回到变量blabla
在numpy模块中链接两个函数:
第一个a = np.arange(15)
创建大小为15的数组,并将其分配给名为a
的变量,并且:
第二个a.reshape(3, 5)
将数组a
重新整形为3个数组的数组,每个数组包含5个元素。
import numpy as np
a = np.arange(15) #-> [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
a = a.reshape(3, 5) #-> [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]
print(a)
答案 2 :(得分:0)
numpy.arange会返回ndarray
个对象。
可能令人困惑的是numpy.reshape是一种将数组作为输入的类方法。但是,有一个等效方法numpy.ndarray.reshape,它是ndarray
个对象可用的方法。在您的情况下,它是已使用的后一种方法。
答案 3 :(得分:0)
这是因为np.arange(15)
返回类的实例。实际上python中的所有东西都是类。这就是为什么你可以做"HELLO WORLD".lower()
在这种情况下,代码的作用是评估np.(arange)
和reshape(3, 5)
所以这将是等效的:
import numpy as np
a = np.arange(15)
a = a.reshape(3, 5)
print(a)