Numpy.array()的参数详细讲解---包括subok参数讲解

定义numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)

 

参数解释: object: 表示一个数组序列

    dtype: 可选参数,通过它可以更改数组的数据类型---可将原来的整型或者其他类型进行强制转换
    
    copy: 可选参数,当数据源是ndarray 时表示数组能否被复制,默认是True
    
    order: 可选参数,以哪种内存布局创建数组,有3个可选值,分别是C(行序列)/F(列序列)/A(默认)
    
    ndmin: 可选参数,用于指定数组的维度--例如 一维数组、二维数组、三维数组等
    
    subok: 可选参数,类型为bool值,默认为False。  为True,使用object的内部数据类型; 为False 使用object数组的数据类型

1.设置dtype参数,默认自动识别,强制转换

实现代码如下:

a=np.array([1,2,3,4,5])
print(a)
#设置数组元素类型
has_dtype_a=np.array([1,2,3,4,5],dtype='float')
has_dtype_a

输出结果如下:

60152fe679ec45c681513f65dad2eab3.png

 

思考如何将浮点型数据,设置为整型,会是什么情况

----强制转换的过程中,直接取整数

实现代码如下:

np.array([1.1,2.5,3.8,4,5],dtype='int')

输出结果如下:

c1d867ecbf4747fea5957cc6a8aaf893.png

python中基础的赋值操作,当一个值赋值给另一个值时,一个值改变另一个值也会改变

         ---原因:python中基础赋值操作,赋值和被赋值的数的地址都是相同的

my_list1=[1,2,3,4]
my_list2=my_list1
print(my_list2)
my_list2[1]=10
print(my_list1)
my_list2

输出结果如下:

Numpy.array()的参数详细讲解---包括subok参数讲解_第1张图片

 获取其两个列表ID的代码如下:

print(id(my_list1))
print(id(my_list2))

输出结果如下:

f24f7e1cc4ad4a1db615649be4b0f616.png可以发现两个链表地址指针指向同一个地址,故改变一个列表中的值,另一个列表中的值也相应改变

2.设置copy参数,默认为True

三种拷贝方法如下:

1、实现代码b=np.array(a)如下:

a=np.array([1,2,3,4])
#定义b数组,赋值a
b=np.array(a)
print(b)
#输出a和b的id值
print('a的id:',id(a))
print('b的id:',id(b))

 输出结果如下:

Numpy.array()的参数详细讲解---包括subok参数讲解_第2张图片

后续代码如下:
 

#当修改b的值时,a不会发生变化
b[0]=10
print('a:',a,'b:',b)
print('='*10)

  输出结果如下:

fe33f9dace394f63bbedf58a41adbe62.png

这种b=a的直接赋值操作,是试图操作,相当于列表的引用赋值

---------这种试图操作,会导致修改b元素时,a的元素也会发生变化

后续代码如下:

a=np.array([1,2,3,4])
#定义b数组,赋值a
b=a
print(b)
#输出a和b的id值
print('a的id:',id(a))
print('b的id:',id(b))

   输出结果如下:

Numpy.array()的参数详细讲解---包括subok参数讲解_第3张图片

3.ndmin 用于指定数组的维度

实现代码如下:
 

a=np.array([1,2,3,4])
print(a)
a=np.array([1,2,3,4],ndmin=2)
print(a)
a.ndim

    输出结果如下:

Numpy.array()的参数详细讲解---包括subok参数讲解_第4张图片----一维数组a在ndmin=2的转换下成为二维数组

4.subok参数,类型为bool值,默认为False。为True时,使用object的内部数据类型; 为False时,使用数组的数据类型

--------如果为True,则新创建的数组将使用子类类型“a”,否则它将是基类数组

实现代码如下:
 

#创建矩阵
a=np.mat([1,2,3,4])
#输出为矩阵类型
print(type(a))
#既要赋值一份副本,又要保持原类型
at=np.array(a,subok=True)
af=np.array(a) #默认为False
print('at.subok为True:',type(at))
print('af.subok为False:',type(af))
print(id(af),id(a))

输出结果如下:

Numpy.array()的参数详细讲解---包括subok参数讲解_第5张图片

----可以看到在subok=True时创建的数组会为真正的子类类型也就是其内部数据类型是小类,在subok=False时创建的数组为基类也就是数组的数据类型是一大类

 

(注:以上所有代码均可直接复制粘贴在jupyter中直接运行)

 

你可能感兴趣的:(数据分析,numpy,python,数据分析)