定义: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数组的数据类型
实现代码如下:
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
输出结果如下:
----强制转换的过程中,直接取整数
实现代码如下:
np.array([1.1,2.5,3.8,4,5],dtype='int')
输出结果如下:
python中基础的赋值操作,当一个值赋值给另一个值时,一个值改变另一个值也会改变
---原因:python中基础赋值操作,赋值和被赋值的数的地址都是相同的
my_list1=[1,2,3,4]
my_list2=my_list1
print(my_list2)
my_list2[1]=10
print(my_list1)
my_list2
输出结果如下:
获取其两个列表ID的代码如下:
print(id(my_list1))
print(id(my_list2))
输出结果如下:
可以发现两个链表地址指针指向同一个地址,故改变一个列表中的值,另一个列表中的值也相应改变
三种拷贝方法如下:
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))
输出结果如下:
后续代码如下:
#当修改b的值时,a不会发生变化
b[0]=10
print('a:',a,'b:',b)
print('='*10)
输出结果如下:
这种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))
输出结果如下:
实现代码如下:
a=np.array([1,2,3,4])
print(a)
a=np.array([1,2,3,4],ndmin=2)
print(a)
a.ndim
输出结果如下:
--------如果为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))
输出结果如下:
----可以看到在subok=True时创建的数组会为真正的子类类型也就是其内部数据类型是小类,在subok=False时创建的数组为基类也就是数组的数据类型是一大类
(注:以上所有代码均可直接复制粘贴在jupyter中直接运行)