我爱编程python

二、ndarray 的属性、数据类型

2018-03-13  本文已影响0人  走范

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)


上一篇下一篇

猜你喜欢

热点阅读