Python数据分析-numpy相关操作复习1-2

目录

1.数组简介和数组的构造

2. 数组的取值和赋值

1.数组简介和数组的构造

#导入numpy模块
import numpy as np

Arrays

调用np.array()从list初始化数组

#构造数组
a = numpy.array([1,2,3])
print(a)
#out<<
[1,2,3]
#打印元素类型
print(type(a))
#out<<
<class 'numpy.ndarray'>
#对比
type([1,2,3])
#out<<
list
#构造矩阵
b = np.array([[1,2,3],[3,2,1]])
print(b)
#out<<
[[1 2 3]
 [3 2 1]]
#shape用于输出矩阵维数
print(a,shape,b.shape)
#out<<
(3,) (2, 3)
#根据坐标,输出矩阵的元素
print(b[0,2])
#out<<
3

常用函数,方便用来创建数组(矩阵)

#创建全是0元素的数组的函数
#构造一个2行3列的0矩阵
a = np.zer0s((2,3))
print(a)
#out<<
[[0. 0. 0.]
 [0. 0. 0.]]

*注意函数使用的括号,有两层,容易出错!

#创建全是1元素的数组的函数
b = np.ones((2,3))
print(b)
#out<<
[[1. 1. 1.]
 [1. 1. 1.]]
#full(),以某元素充满,构造一个同一元素的数组
c = np.full((2,3),5)
print(c)
#out<<
[[5 5 5]
 [5 5 5]]
#eye(),创建一个对角矩阵
d = np.eye(5)
print(d)
#out<<
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
#random()生成随机矩阵
#生成0到1的4行5列数组
e = np.random.random((4,5))
print(e)
#out<<
[[0.10741274 0.6000198  0.85585006 0.72483361 0.44521006]
 [0.13794356 0.9610332  0.31433672 0.83437519 0.43897039]
 [0.9306755  0.08639974 0.19172991 0.65244492 0.31036739]
 [0.54068172 0.46926277 0.83960664 0.87333669 0.76868625]]
#empty()函数,随机生成多个数组,数组个数以及维度都是固定的
#2个3行4列
f = np.empty((2,3,4),dtype = float)
print(f)
#out<<
[[[4.41990004e+222 2.23119629e-046 2.21211602e+214 6.01346953e-154]
  [6.01334637e-154 5.28595595e-085 8.88054495e+252 9.05437256e+271]
  [5.42373773e-109 1.16304905e+214 6.01346953e-154 5.74381615e+169]]

 [[8.30443188e-114 1.22829239e+184 6.01346953e-154 6.01334637e-154]
  [5.28595595e-085 8.88054495e+252 3.13146950e-120 6.01334503e-154]
  [2.46090679e-154 2.93573416e+222 1.36181966e+161 5.43185167e-096]]]
#arrange() 按要求构造数组
#左开右闭
e = np.arange(1,15,3)
print(e)
#out<<
[ 1  4  7 10 13]
print(e.shape)
#out<<
(5,)
#数组可以有不同的数据类型,注意区分数据类型dtype,数组类型type
arr = np.array([11,2,3,4,5])
print(arr.dtype)
#out<<
int32
#生成数组时可以指定数据类型,如果不指定numpy会自动匹配合适的类型
#使用astype()函数可以复制数组并转换数据类型
int_arr = np.array([1,2,3,4,5])
print(int_arr,int_arr.dtype)
#out<<
[1 2 3 4 5] int32
float_arr = np.array([3.4,4.5,2.3,-3.4])
print(float_arr)
#out<<
[ 3.4  4.5  2.3 -3.4]
#使用astype将float转换为int时小数部分被舍弃
int_arr = float_arr.astype(np.int64)
print(int_arr,int_arr.dtype)
#out<<
[ 3  4  2 -3] int64
#使用astype把字符串转换为数组,如果失败便抛出异常
str_arr = np.array(['1.24','2.2','5.8','assas'],dtype = np.string_)
str_arr
#out<<
array([b'1.24', b'2.2', b'5.8', b'assas'], dtype='|S5')
#astype使用其他数组的数据类型作为参数
int_arr = np.arrange(10)
float_arr = np.array([1.3,2.4,3.5,45.0,5.8])
print(float_arr.dtype,int_arr.dtype)
#out<<
float64 int32
int_arr.astype(dtype = float_arr.dtype)
#out<<
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

2.数组取值和赋值

#numpy含有多种取值的方式
a = np.array([[1,2,3],[1,2,3],[2,3,3]])
print(a)
print(a.shape)
print(a.dtype)
#out<<
[[1 2 3]
 [1 2 3]
 [2 3 3]]
(3, 3)
int32
#数组切片(同样用于多维数组)
b = a[0:2,0:2].copy()
print(b)
#out<<
[[1 2]
 [1 2]]
#修改指定元素的值
b[0,0] = 11111
print(b)
print(a)
#out<<
[[11111     2]
 [    1     2]]
[[1 2 3]
 [1 2 3]
 [2 3 3]]
#创建3*4的二维矩阵/数组提取行元素
row_r1 = a[1,:]
print(row_r1,row_r1.shape)
row_r2 = a[1:2,:]
print(row_r2,row_r2.shape)
#out<<
[[1 2 3]] (1, 3)
#提取列元素
col_r1 = a[:,1]
print(col_r1)
#更自由的取值和组合
a = np.array([[12,2],[3,4],[4,5]])
print(a)
#out<<
[[12  2]
 [ 3  4]
 [ 4  5]]
#相当于提取a[0][0],a[1][1],a[2][0]
print(a[[0,1,2],[0,1,0]])
[0],a[1][1],a[2][0]
print(a[[0,1,2],[0,1,0]].shape)
#out<<
[12  4  4]
(3,)
#注意语法
print(np.array([a[0,0],a[1,1],a[2][0]]))
[12  4  4]
#创建二维数组
a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
print(a)
#out<<
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
#用下标生成一个向量
b = np.array([0,2,0,1])
a[np.arange(4),b]
#out<<
array([ 1,  6,  7, 11])
a[np.arange(4),b] += 10#对指定元素进行相关操作
print(a)
#out<<
[[11  2  2]
 [ 1  2 13]
 [11  2  4]
 [ 1 12  3]]
#根据条件判断取元素
a = np.array([[1,2],[3,4],[5,6]])
print(a)
#out<<
[[1 2]
 [3 4]
 [5 6]]
#根据条件对每个元素判断
bool_index = (a > 2)
print(bool_index)
#out<<
[[False False]
 [ True  True]
 [ True  True]]
#用刚才的布尔型数组作为下标就可以去除符合条件的元素
print(a[bool_index])
#out<<
[3 4 5 6]
print(a[a>2])
#out<<
[3,4,5,6]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值