问题产生:
当我创建一个ndarray数组,并且更改了其中数据的类型,结果在输出type的时候仍然是ndarray。
这一点已经在
Python:Numpy学习(一)常用函数(小白)_Troysue的博客-CSDN博客
中有所体现,但当时并不清楚,为什么更改了数组内部数据的数字类型,输出的数组类型依然是numpy.ndarray,该问题会在文末指出。
(本文只记录探究成员变量的过程)
发现问题:
最近在学习numpy和pandas的时候遇到了一个dtype,身为小白的我认为dtype是函数中的默认参数,但不明白为什么dtype还可以是成员变量。不过不得不承认,我可以通过调用dtype,输出数组中数据的类型。
解决问题:
在搜索CSDN中,得知,成员变量相当于属性,比如dtype,其属性可以是int, str, float等等。
成员变量属于类中实例化的对象,也就是说,成员变量随对象生,随对象亡。
如何判定成员变量?
问题的争执点在于——如何区分成员变量和类中某一函数的参数。
其实很简单:
1. 成员变量本身就是存在的;参数需要我们传进去。
2. 成员变量可以调用,参数不可以调用。
import numpy as np
c = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[3, 5, 6, 0],
[8, 9, 5, 6]])
print(c.dtype)
'''int32'''
print(type(c))
'''<class 'numpy.ndarray'>'''
以上我输入的内容均为整数型,所以数据中的数字为int。
fm = np.array([1, 2, 4, 5], dtype=float)
print(fm)
print(fm.dtype)
'''
[1. 2. 4. 5.]
float64
'''
我可以利用np.array中的参数dtype将数据类型由int转化为float,但是在我调用dtype的时候,并不是array函数中的参数dtype,而是成员变量dtype。两者重名了,所以不好区分。
如果仔细来看会发现是下列情况:
代码: dtype = self.dtype
成员变量 参数
但python还是给出了很多提示的:
另:为什么更改了数组内部数据的数字类型,输出的数组类型依然是numpy.ndarray
这是由于一个类中包含着很多数据类型,当我们单独拿出一个整数时,其类型为基础的int,但是我们创建一个类,类中囊括了很多数据类型,我们创造的对象,无论囊括了集中数据类型,均属于类,所以打印type的时候直接将类作为数据类型输出。