1. ndarray属性
- dtype:一个用于说明数组元素数据类型的对象。
- shape: 一个数组的各个维度大小的元组,即表示数组的形状
- size:元素总个数,即shape中各个数的相乘
- ndim: 一个数组的维度数量
a = np.array([
[1,2],
[3,4],
[5,6],
[7,8]
])
print("维度的数量",a.ndim)
print("数组的形状",a.shape)
print("数组的元素类型",a.dtype)
print("数组的元素数量",a.size)
2. ndarray中元素数据类型
- 创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出合适的数据类型,所以一般不需要显示给定数据类型。
-
如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新的数组。
- 数值型dtype的命名方式为:一个类型名称(eg:int, float等),后接一个表示各个元素位长的数字
比如Python的float数据类型(双精度浮点值),需要占用8个字节(86位),因此在Numpy中记为float64。
-
每个数据类型都有一个类型代码,即简写方式。
3. ndarray修改形状
- 对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数/方法从而改变数组的形状。
直接修改数组ndarray的shape的值,要求修改后乘积不变。
直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。
- 当指定一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
直接修改shape的值
这种操作会直接修改原数组的形状。
- 使用reshape方法修改形状
- -1 表示当前维度的元素个数,自动计算,会根据数组元素的个数,和已经传入的数值,来判断-1位置的值应该填写的数字。
这种操作不会修改原数组的形状,返回一个修改形状后的新的数组。
import numpy as np
a = np.arange(1,25,2) #生成一个从1开始到25结尾(不包含25),步长为2的一维数组。
print(a) #打印生成的数组
print(a.size) #打印数组的大小
b = a.reshape(2,6) #通过reshape函数根据原数组元素内容生成一个新的(2,6)的二维数组
print(b) #打印新生的数组
print(b.size) #打印新数组大小
print(a) #打印原数组
b[0][1] = 30 #修改新数组中第一行,第二列的数值为30
print(b) #打印新数组
print(a) #打印原数组,数值根据新数组的变化,一起改变了。
print(a.reshape(3,-1)) #通过-1来确定列的数目
print(a.reshape(-1,3)) #通过-1来确定行的数目
a.shape #打印原数组的形状,确定原数组的形状没有变更