初入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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值