logo头像

life is beautiful like sunshine!

numpy学习3:对象属性和基本数据类型

一、ndarray对象属性

ndim 数组轴(维度)的个数,轴的个数被称作秩

shape 数组的维度, 例如一个2排3列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性

size 数组元素的总个数,等于shape属性中元组元素的乘积。

dtype一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。不过NumPy提供它自己的数据类型。

itemsize 数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).

a = np.array([[1,2,3],[4,5,6]])
print("维度的数量:",a.ndim)
print("数组元素类型:",a.dtype)
print("数组的元素个数:",a.size)
print("数组的形状:",a.shape)
print("数组中每个元素的字节大小:",a.itemsize)

输出:
维度的数量: 2
数组元素类型: int32
数组的元素个数: 6
数组的形状: (2, 3)
数组中每个元素的字节大小: 4

二、numpy中的基本数据类型

下面的这两张图是所有的数据类型:
1.jpg

2.jpg

创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出适合的数据类型,所以一般不需要显示给定数据类型。

  • 指定类型创建:

    a = np.array([[1,2,3],[4,5,6]],dtype=int)
    
  • astype方法
    如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。

    a = np.array([[1,2,3],[4,5,6]])
    print("改变前的类型:",a.dtype)
    a = a.astype(float)
    print("改变后的类型:",a.dtype)
    

    输出
    改变前的类型: int32
    改变后的类型: float64

三、修改ndarray的形状

对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数方法从而改变数组的形状。

  • 直接修改数组ndarray的shape值, 要求修改后乘积不变。
  • 直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致。

当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。

  • 修改数组的shape值

    #调整数组大小
    a = np.array([[1,2,3],[4,5,6]])
    a.shape=(3,2)
    print(a)
    
  • 使用reshape函数修改

'''
    reshape 调整数组大小
'''
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print(b)

输出:
[[1 2]
[3 4]
[5 6]]

上一篇