**
数组属性的使用:*
数组对象提供了相应的属性,以读取所需要的属性值
(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.]])