python数据可视化基础教学4(NumPy的使用)

目录

1.创建ndarray

2.Numpy数据类型的使用

3.数据类型对象(dtype)

4.使用astype()修改数据类型

5.Numpy数组属性

6.常见的ndarray数组属性

7.其他数组的创建方式

8.产生数列的函数

9.使用随机函数创建数组

10.数组的花式切片 


1.创建ndarray

numpy.array(object,dtype = None,copy = True,order = None,subok = False,ndmin = 0) 
主要参数:
                object:数组或嵌套的数列  
                dtype:数组元素的数据类型,可选  
                order:创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)。  
                ndmin:指定所生成数组应具有的最小维度。  

#创建一维数组
a = np.array([1,2,3])
print(a)

#创建二维数组
b = np.array([[1,2,3],[4,5,6]])
print(b)

#使用ndmin参数设置数组的最小维度
c = np.array([1,2,3,4,5,6],ndmin=2)
print(c)

#改变数组维度
c.shape = 3,2       #将一维数组改成三行二列的二维数组
print(c)

#使用dtype参数设置数组类型为复数
x = np.array([1,2,3],dtype = complex)
print(x)

2.Numpy数据类型的使用

#NumPy数据类型的使用
import numpy as np
x = np.float32(5)
print('x为:',x)
print('x对象的data属性:',x.data)
print('x对象的size属性:',x.size)
print('x对象的维数:',x.ndim)

y= np.bool_(x)
print('转化为bool类型的x为:',y)

z = np.float16(y)
print('True值转化为float16类型为:',z)

输出结果:

3.数据类型对象(dtype)

numpy.dtype(object,align,copy)
主要参数:
                object:要转换为dtype对象的数据对象。
                align:如果为True,则填充字段使其类似C的结构体。
                copy:指明是否复制dtype对象。

#使用dtype对象设置数据类型
import numpy as np 
x = np.array(5,dtype='float32')
print('x为:',x)
print('x对象的data属性:',x.data)
print('x对象的size属性',x.size)
print('x对象的维数:',x.ndim)

y = np.array(x,dtype='bool_')
print('转化为bool类型的x为:',y)

z = np.array(y,dtype="float16")
print('True值转化为float16类型为:',z)

 输出结果:

4.使用astype()修改数据类型

array.astype(dtype,order='K',casting='unsafe',subok=True,copy=True)  
列如,将y设置成float32类型,可以用:  
y = y.astype("float32") 或者 y = y.astype(np.float32)  
 

#使用astype转化DataFrame
import pandas as pd
df = pd.DataFrame([{'qty':'3','num':'50'},{'qty':'7','num':'20'}])
print(df)
print(df.dtypes)
print('==========转化后=====================')
df['qty'] = df['qty'].astype('int')
df['num'] = df['num'].astype('float64')
print(df.dtypes)

输出结果:

5.Numpy数组属性

轴(Axis):每个线性数组称为一个轴,轴即数组的维度。 秩(Rank):秩描述NumPy数组的维数,即轴的数量。
axis = 0代表按第0轴方向操作,即对每列进行操作
axis = 1表示按第1轴方向操作,即对每行进行操作

#使用axis参数设置当前轴。
import numpy as np
arr = np.array([[0,1,2],[3,4,5]])
print(arr)
print('按列求和',arr.sum(axis=0))
print('按行求和',arr.sum(axis=1))

输出结果:

6.常见的ndarray数组属性

ndarray.ndim 秩,轴的数量
ndarray.shape 数组的维度
ndarray.size 数组元素的总个数
ndarray.dtype 数组元素类型
ndarray.itemsize每个元素的大小(B)
ndarray.data 实际数组元素

#例3.9 使用reshape()函数调整数组形状
import numpy as np
arr = np.array([0,1,2,3,4,5,6,7])
#显示数组arr的rank
print('arr的秩为:',arr.ndim)
arr3D = arr.reshape(2,2,2)  #Rank为3,每个轴里的元素为2个
print(arr3D)
print('秩为:',arr3D.ndim)

输出结果:

#显示数组的维度
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print(a.shape)


#调整数组大小
import numpy as np
a = np.array([[1,2,3],[1,2,3]])
a.shape = (3,2)
print(a)


#创建dtype数据类型对象
myArr = np.array([1,2,3],dtype = np.float64)
myArr.dtype

7.其他数组的创建方式

1.numpy.empty() 创建一个指定形状、数据类型的空数组。这个数组没有经过初始化,其内容为空。
格式: numpy.empyt(shape,dtype = float,order = "C")
参数:
        shape: 数组形状
        dtype: 数组类型
        order: 有‘C’和‘F’两个选项,分别代表行优先和列优先,表示在计算机内存中存储元素的顺序

2.numpy.zeros() 创建全零填充的数组
格式:numpy.zeros(shape,dtype = float,order = 'C')

3.numpy.ones() 创建全1填充的数组
格式:numpy.ones(shape,dtype=None,order='C')

#创建一个空数组
import numpy as np
x = np.empty([3,2],dtype=int)
print(x)

#运行后得到的数组元素值是不确定的,因为所用空间为初始化。

 输出结果:

#创建一个全零数组
import numpy as np
#默认为浮点数
x = np.zeros(5)
print(x)

#设置类型为整数
print('================设置类型为整数=======================')
y = np.zeros((5),dtype=int)
print(y)

#自定义类型
print('================自定义类型======================')
z = np.zeros((2,2),dtype = [('x','i4'),('y','i4')])
print(z)

输出结果:

#建立一个全1数组
import numpy as np
x = np.ones(5)
print(x)

#自定义类型
y = np.ones([3,3,3],dtype = int)
print(y)

输出结果:

8.产生数列的函数

1)range()  

2)aranage()  
格式:range(start,stop[,step,],dtype=None)  
3)linspace()  
格式:numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

#生成3~9的步长为0.2的数组
import numpy as np
arr2 = np.arange(3,9,0.2)
arr2

 

# 生成1~5中的10个数
import numpy as np
x = np.linspace(1,5,num=10)
print(x)

9.使用随机函数创建数组


常用的Numpy随机函数:

#创建随机数组
import numpy as np
#生成2行3列的随机浮点数组
a = np.random.rand(2,3)
#生成2行2列的10以内的随机整数数组
b = np.random.randint(0,10,(2,2))
#生成2行3列的[1,2)的随机浮点数组
c = np.random.uniform(1,2,(2,3))
print("生成2行3列的随机浮点数组:",a)
print("生成2行2列的10以内的随机整数数组:",b)
print("生成2行3列的[1,2)的随机浮点数组:",c)

10.数组的花式切片 


a.给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数值?

#给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数值?
a = np.arange(1,6,dtype = int)
print(a)

b = np.zeros(17,dtype = int)
print(b)

b[::4] = a
print(b)

b.打印出以下函数(要求使用np.zeros创建8*8的矩阵)

#打印出以下函数(要求使用np.zeros创建8*8的矩阵)
x = np.zeros((8,8),dtype = int)
x[::2,1:4:2] = 1
x[1:8:2,::2] = 1

print(x)

c.用arange()创建一个3行5列的二维数组,完成下列操作
(1)索引第0行中第3列和第4列的元素 输出它
(2)索引第2行和第三行中第3列,第4列和第5列的元素 输出它

#创建数组并输出
x = np.arange(1,16).reshape(3,5)
print(x)
#索引第0行中第3列和第4列的元素 输出它
y = x[0,2:4]
print(y)
#索引第2行和第三行中第3列,第4列和第5列的元素并输出它
z = x[1:3,2:5]
print(z)

 输出结果:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值