二、ndarray 的属性、数据类型
1、ndarray 的属性
(1)ndim 数组轴(维度)的个数,轴的个数被称作秩
(2)shape 数组的维度, 例如一个2排3列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性
(3)size 数组元素的总个数,等于shape属性中元组元素的乘积。
(4)dtype 一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。不过NumPy提供它自己的数据类型。
(5)itemsize 数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).
#定义一个2*3*3*2的四维数组,分别求其纬度、元素个数、数据类型、元素的字节大小,并改变其形状
arr=np.array([
[
[[1,2],[42,51],[75,88]],
[[11,23],[44,85],[97,80]],
[[1,2],[4,5],[7,8]]
],
[
[[13,25],[47,58],[79,81]],
[[12,23],[44,55],[76,87]],
[[19,20],[41,52],[73,84]]
]
])
# print(arr)
print()
# 数组的纬度
print(arr.ndim)
print()
# 数组的大小:2*3*3*2=36
print(arr.size)
print()
# 数据类型
print(arr.dtype)
print()
# 每个元素占有的字节数:4*8=32,是int32类型的,共占4个字节,每个字节8位,共32位。
print(arr.itemsize)
print()
# shape改变形状
# 改变其形状:2*3*3*2=i*j*k*l....如果为-1则让其自动扩展。
# 对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数/方法从而改变数组的形状。
# 直接修改数组ndarray的shape值, 要求修改后乘积不变。
# 直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,
# 也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。
# 当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
print(arr.reshape(1,1,1,36))
print(arr.reshape(1,2,-1,9))
2、ndarray 数据类型
(1)创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出适合的数据类型, 所以一般不需要显示给定数据类型。
(2)如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。
a=np.array(["python","C语言","java"])
print(a)
a.dtype
a1=np.array(["python","C","java"],dtype='S8')
print(a1.dtype)