初入Python数据分析库——Numpy(二)
一、两个特殊的Numpy数组
(一)全0数组
numpy.zeros(shape,dtype = float ,order =‘C’)
1.函数说明
(1)shape 数组形状–元组
(2)dtype 数据类型
2.详细说明
# 默认为浮点数
np.zeros(5)
# --------------------------------------
# 结果是:
array([0., 0., 0., 0., 0.])
# 设置为整型
np.zeros(5,dtype = 'int')
# --------------------------------------
# 结果是:
array([0, 0, 0, 0, 0])
# 设置数组(一维、二维、三维)
# 一维 --> 逗号不能省略
a = np.zeros((5,),dtype = 'int')
print(a)
# 二维
b = np.zeros((2,2))
print(b)
# 三维
c = np.zeros((2,2,3))
print(c)
# --------------------------------------
# 结果是:
[0 0 0 0 0]
[[0. 0.]
[0. 0.]]
[[[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]]]
3.zeros_like 返回就有给定数组相同形状和类型的零数组
ar1 = np.array([[1,2,3],[4,5,6]])
np.zeros_like(ar1)
# --------------------------------------
# 结果是:
array([[0, 0, 0],
[0, 0, 0]])
(二)全1数组
numpy.ones(shape,dtype = float ,order =‘C’)
1.函数说明
(1)shape 数组形状–元组
(2)dtype 数据类型
2.详细说明
ar2 = np.ones(9)
print('ar2:',ar2)
# --------------------------------------
# 结果是:
ar2: [1. 1. 1. 1. 1. 1. 1. 1. 1.]
ar3 = np.ones((2,3,4))
print('ar3:',ar3)
# --------------------------------------
# 结果是:
ar3: [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
3.ones_like 返回就有给定数组相同形状和类型的一数组
ar4 = np.ones_like(ar3)
print('ar4:',ar4)
# --------------------------------------
# 结果是:
ar4: [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
二、Numpy数组属性
(一)Numpy 的数组中比较重要 ndarray对象属性:
1.ndarray.ndim 秩,维度的数量
2.ndarray.shape 数组的维度,对于矩阵,n行m列
3.ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
4.ndarray.dtype ndarray对象的元素类型
5.ndarray.itemsize ndarray对象中每个元素的大小,以字节为单位
(二)详细说明
1.ndarray.ndim 秩,维度的数量
a = np.array([1,2,3,4,5,6])
b = a.reshape((2,3))
c = np.array([
[
[1,2,3],
[4,5,6]
],
[
[11,22,33],
[44,55,66]
]
])
print('a的ndim:',a.ndim)
print('b的ndim:',b.ndim)
print('c的ndim:',c.ndim)
# 结果是:
a的ndim: 1
b的ndim: 2
c的ndim: 3
2.ndarray.shape 数组的维度,对于矩阵,n行m列,也可以用来调整维度
# 返回的数据类型是 元组
a = np.array([1,2,3,4,5,6])
print('一维数组:',a.shape)
b = np.array([ [1,2,3],[4,5,6] ])
print('二维数组:',b.shape)
# 注意三维的书写格式!!!
c = np.array([
[
[1,2,3],
[4,5,6]
],
[
[11,22,33],
[44,55,66]
]
])
print('三维数组:',c.shape)
# --------------------------------------
# 结果是:
一维数组: (6,)
二维数组: (2, 3)
三维数组: (2, 2, 3)
(1)调整维度 reshape
注意1:返回调整维度后的副本,而不改变原 ndarray
a = np.array([1,2,3,4,5,6])
print('一维数组a:',a.shape)
b = a.reshape((2,3)) # a 不会被改变
print('b的形状:',b.shape)
print('b:',b)
print('a的形状:',a.shape)
print('a:',a)
# --------------------------------------
# 结果是:
一维数组a: (6,)
b的形状: (2, 3)
b: [[1 2 3]
[4 5 6]]
a的形状: (6,)
a: [1 2 3 4 5 6]
注意2:多一个、少一个元素都不行
# 多一个元素也不行 -- 错误
c = np.arange(20).reshape((4,6))
c
# 少一个元素都不行 -- 错误
b = np.arange(20).reshape((4,4))
b
(2)调整维度resize
numpy.resize(a,new_shape)
(如果新数组大于原始数组,则新数组将填充a的重复副本。)
a = np.array([ [0,1],[2,3] ])
b_2_3 = np.resize(a,(2,3))
b_2_3
# --------------------------------------
# 结果是:
array([[0, 1, 2],
[3, 0, 1]])
3.ndarray.size 数组元素的总个数,相当于 .shape 中的 n*m 的值
a = np.array([1,2,3,4,5,6])
print('[1,2,3,4,5,6]的size:',a.size)
b = np.array([ [1,2,3],[4,5,6] ])
print('[ [1,2,3],[4,5,6] ]的size:',a.size)
b
len(b)
# --------------------------------------
# 结果是:
[1,2,3,4,5,6]的size: 6
[ [1,2,3],[4,5,6] ]的size: 6
array([[1, 2, 3],
[4, 5, 6]])
2
4.ndarray.dtype ndarray对象的元素类型
示例
a = np.array([1,2,3,4,5,6])
print(a.dtype)
b = np.array([1.1,2.3,4,5,6])
print(b.dtype)
# --------------------------------------
# 结果是:
int32
float64
关于astype()函数
Numpy数据类型转换,调用astype返回数据类型修改后的数据,但是源数据的类型不会改变。
注意看书写格式,错误的书写格式将不能修改成功!!!
示例(1)
# 正确操作
a = np.array([1.1,1.2])
a = a.astype('int')
print(a.dtype)
a = a.astype('bool')
print(a.dtype)
# --------------------------------------
# 结果是:
int32
bool
示例(2)
a = np.array([1.1,1.2])
print('a数据类型:',a.dtype)
# 错误操作 --> 原数据类型不能被改变!
print('astype修改数据类型:',a.astype('float32').dtype)
print('原数据类型未修改',a.dtype)
print(a)
# 正确操作
a = a.astype('float32')
print('修改类型后再次操作,类型改变:',a.dtype)
b = a.astype('int')
print(b)
# --------------------------------------
# 结果是:
a数据类型: float64
astype修改数据类型: float32 # 看下面的原数据类型,其实并未被改变!!!
原数据类型未修改 float64
[1.1 1.2]
修改类型后再次操作,类型改变: float32
[1 1]
5.ndarray.itemsize ndarray对象中每个元素的大小,以字节为单位
示例(1)
a = np.array([1.1,2.2,3.3])
print('dtype:',a.dtype,'itemsize:',a.itemsize)
b = a.astype('float32')
print('dtype:',b.dtype,'itemtype:',b.itemsize)
示例(2)
a = np.array([1,2,3])
print('dtype:',a.dtype,'itemsize:',a.itemsize)
b = a.astype('int64')
print('dtype:',b.dtype,'itemtype:',b.itemsize)