4.1 数组的维度
import numpy as np arr = np.random.random(size = (3, 5)) arr.ndim # 维度
4.2 数组的形状
import numpy as np arr = np.random.random(size = (3, 5)) arr.shape # 形状
4.3 数组元素的总数
import numpy as np arr = np.random.random(size = (3, 5)) arr.size # 数组元素的总数
4.4 数据类型
import numpy as np arr = np.random.random(size = (3, 5)) arr.dtype # 数据类型 float64 (64位)
4.5 数组中每个元素的大小(以字节为单位)
import numpy as np arr = np.random.random(size = (3, 5)) # 0, 1 -----> 位 # 8个位 -----> 字节 # 64 / 8 = 8 arr.itemsize # 每个元素的大小,对应8个字节
5.NumPy数据保存
🚩我们可以使用 save 方法去保存我们的数组:
import numpy as np arr = np.arange(0, 10, 3) # NumPy 的方法,功能类似 # 当前目录 np.save('./data1', arr) # 保存
运行后我们返回到创建好的目录下:
可以发现多了一个 data1.npy
这里面就是我们刚刚保存的数组信息。
注意,如果你点开新建立的这个文件的话,会发现:
里面并没有我们想看到的存储信息,这是因为文件保存的内容是二进制的,只能使用代码去打开,下面我们介绍从文件中读取我们的数据的方法:
我们按照下述代码可以取出数据:
import numpy as np arr = np.arange(0, 10, 3) # NumPy 的方法,功能类似 np.load('./data1.npy') # 取出数据
如果我们要把多个数组存入一个文件,可以使用 savez 方法:
import numpy as np arr = np.arange(0, 10, 3) # NumPy 的方法,功能类似 np.set_printoptions(suppress = True) arr2 = np.logspace(0, 10, base = 2, num = 11) np.savez('./data2.npz', x = arr, y = arr2) # 把arr和arr2都存入'./data2.npz' # 把arr存入,起名为x;把arr2存入,起名为y
运行后,可以看到多了一个 data2.npz
文件,这里面就是我们刚刚保存的数组信息。
我们在取值的时候可以一个一个取:
import numpy as np arr = np.arange(0, 10, 3) # NumPy 的方法,功能类似 np.set_printoptions(suppress = True) arr2 = np.logspace(0, 10, base = 2, num = 11) np.load('./data2.npz')['x'] # 取出 x ---> 取出 arr np.load('./data2.npz')['y'] # 取出 y ---> 取出 arr2
注意我们存的时候用什么名,取的时候就用什么名,比如:
显然在这个时候取出 y
的话就是错误的。
读写csv、txt文件:
import numpy as np arr = np.random.randint(0, 10, size = (3, 4)) # 储存数组到csv文件 np.savetxt("./arr.csv", arr, delimiter = ',') # 存储到txt文件也一样 # 读取文件 np.loadtxt('./arr.csv', delimiter = ',', dtype = np.int32)
6.NumPy数据类型
🚩我们的数据类型包涵三大类:
整数
浮点数
字符串
ndarray的数据类型:
- int(整数):
int8、uint8、int16、int32、int64
- float(浮点数):
float16、float32、float64
- str(字符串)
float16 float32,int16 int 32有什么不同:数字越大,证明其在内存中所占内存越大,当然相应的,可以表示的数的范围也就越大:如 int8 的范围大小为 28,但是因为它既包含正数也包含负数,故它其实可以表达的范围就是 [-128, 127] ,unit8 的范围也是 28,不同的是它不包含负数即只包含0和正数,故 unit8 的取值范围就是 [0, 255],使用 astype() 方法可以转换数据类型:
我们在创建类型的时候,可以用dtype指明它的数据类型
当然,我们还可以给它为 int32:
我们输入如下代码,编译运行:
然后返回到我们的文件夹查看我们刚刚保存的两个文件:
很直观的可以注意到,两个文件的大小相差大致为8倍,这个的原因其实就是 64 / 8 = 8
使用 astype() 方法可以转换数据类型:
这里我们需要注意,转换之后,原数组的数据类型是不变的,使用astype()进行转换可以说是创建了一个新的数组: