Python数组属性方法

**

数组属性的使用:*

数组对象提供了相应的属性,以读取所需要的属性值
(1)、ndim属性,返回数组的维数

import numpy as np
ar1 = np.array([[i for i in "abc"],[i for i in "def"],[i for i in "ghi"]])  #建立一个三行三列为字符型的数组
ar1

array([[‘a’, ‘b’, ‘c’],
[‘d’, ‘e’, ‘f’],
[‘g’, ‘h’, ‘i’]], dtype=’<U1’)

ar1.ndim   #查看数组的维度

2

(2),shape,返回数组的形状大小

ar1.shape   #查看数组的形状大小

(3, 3)

(3)size,返回数组元素个数

ar1.size

9

(4) dtype,返回数组元素类型

ar1.dtype

dtype(’<U1’)

(5)itemsize,返回数组元素字节大小

ar1.itemsize

4

2、数组方法的使用

a = np.arange(0,9)   #创建一个0到8一维数组
a

array([0, 1, 2, 3, 4, 5, 6, 7, 8])

(1)、reshape方法,改变数组形状

a_2 = a.reshape((3, 3))
a_2 

array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])

既然shape属性是获取数组的形状(返回一个元组类型),那我们可以

a.shape = (3,3)
a

array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
前者是创建一个新的数组,后者是直接在a对象的基础上直接更改

(2)、all方法,判断指定的数组元素是否都是非0,则返回True,否则返回False

m = np.ones(9).all()
m

True

m_2 = np.arange(0,9).reshape((3,3))
m_2[1,2] = 0
m_2

array([[0, 1, 2],
[3, 4, 0],
[6, 7, 8]])

m_2.all(axis=1)   #从行的方向上判断每行的值是否存在0值

array([False, False, True])

(3)、any方法,判断数组元素若有非0值,则返回True,否则返回False

m_3 = np.array([[1,0,2],[0,0,2]])
m_3

array([[1, 0, 2],
[0, 0, 2]])

m_3.any(axis=0)

array([ True, False, True])

m_3.any(axis=1)

array([ True, True])

(4) copy方法,复制数组副本

ar2 = ar1  #直接将数组ar1 赋值给ar2
id(ar2) == id(ar2)   #获取分别获取ar1与ar2的内存地址,判断其是否都指向同一块内存地址

True

ar3 = ar1.copy()   #使用copy方法
id(ar3) == id(ar1) 

False

(5). astype方法,改变数组元素类型

a = np.eye(3,3,dtype='int')
a

array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])

a.astype(dtype=float)

array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

猜你喜欢

转载自blog.csdn.net/changshupx/article/details/108243595