手撕numpy系列持续更新中~
1)举例说明
x = np.arange(10).reshape(2,5)
display(x)
display(x.ndim)
display(x.shape)
display(x.dtype)
display(x.size)
display(x.itemsize)
display(x.nbytes)
结果如下:
2)单独说一下属性itemsize和nbytes的含义
1)列表转数组:直接将一个列表当作array()函数的参数即可;
import numpy as np
list1 = list(range(10))
display(list1)
array1 = np.array(list1)
display(array1)
结果如下:
2)数组转列表:tolist()
import numpy as np
array2 = np.arange(10).reshape(2,5)
display(array2)
list2 = array2.tolist()
display(list2)
array3 = np.arange(10)
display(array3)
list3 = array3.tolist()
display(list3)
结果如下:
操作如下:
display(np.inf)
display(np.NINF)
display(np.PZERO)
display(np.NZERO)
display(np.nan)
display(np.e)
display(np.pi)
display(np.euler_gamma)
display(np.newaxis)
结果如下:
1)numpy中常用的的数据类型
2)numpy中的数据类型转化
记住一句话:numpy中的数据类型转换,不要使用x.dtype修改元素的数据类型,最好用x.astype()这种方式。
① 使用dtype原地修改数组的数据类型;
x = np.array([1.2,3.4,5.6],dtype=np.float64)
display(x)
display(x.dtype)
display(x.nbytes)
# --------------------------------------------
x.dtype="float32"
display(x)
display(x.nbytes)
# --------------------------------------------
x.dtype="float16"
display(x)
display(x.nbytes)
结果如下:
② 使用dtype原地修改数组的数据类型,为什么会出现上述现象?
③ 使用astype()函数修改数组的数据类型:相当于新创建了一个数组;
z = np.array([1.5,3.7,4.8])
display(z)
display(z.dtype)
# --------------------------
zz = z.astype(np.int64)
display(zz)
display(zz.dtype)
结果如下:
1)使用numpy中的reshape()函数修改数组对象;
xx = np.arange(10).reshape(2,5)
xxx = np.reshape(xx,(5,2))
display(xxx)
结果如下:
2)使用数组对象的reshape()函数修改数组对象;
yy = np.arange(10).reshape(2,5)
display(yy)
结果如下:
3)改变数组形状时,如果维度大于1,可以将“最后一个维度”设置为-1;
p = np.arange(6).reshape(2,3)
display(p)
# ----------------------------
q = np.arange(6).reshape(2,-1)
display(q)
结果如下:
① 两个函数的相同点
② 两个函数的不同点
③ 操作如下
array1 = np.array([[1,2,3],[4,5,6]])
display(array1)
array2 = array1.ravel()
display(array2)
array3 = array1.flatten()
display(array3)
# 此时我们修改array2和array3中的某个元素,看看对于array1的影响
array2[0] = 666
display(array2)
display(array1)
array3[1] = 888
display(array3)
display(array1)
结果如下:
后台回复关键词「进群」,即刻加入读者交流群~
五
先撕numpy,再撕pandas!
朱小五