NumPy的使用

import numpy as np

1.创建numpy数组的几种方法

(1)使用列表创建

#创建一个2行4列的numpy数组
arr = np.array(
    [
        [1, 2, 3, 4],
        [5, 6, 7, 8]
    ]
)

(2)使用zeros函数创建,数组中每个元素填充0

np.zeros((3, 4))#定义一个3行4列的全是0的numpy数组

(3)使用ones函数创建,数组中每个元素填充1

np.ones((5, 6))#定义一个5行6列的全是1的矩阵

(4)使用empty函数 填充随机值

np.empty((3, 6)) #创建3行6列的随机数组

输出结果如下:

array([[1.58359166e-311, 5.33590898e-322, 0.00000000e+000,
        0.00000000e+000, 8.01097888e-307, 3.16251369e+180],
       [3.42926747e+169, 6.18057710e+223, 3.42915472e+169,
        8.87707041e+252, 1.03915423e-095, 3.98472821e+252],
       [3.95970760e+257, 1.12856763e+277, 4.27148457e+180,
        1.17522778e+214, 3.97092717e+246, 8.37177429e-144]])

(5)使用arange函数 类似于Python的range函数,其中arange(2, 20, 3)以2开始到20结束(取不到20),步长为3

np.arange(2, 20, 3)

输出结果如下:

array([ 2,  5,  8, 11, 14, 17])

(6)使用linspace函数  生成一个等差数列, 其中linspace(2, 20, 3)以2开始到20结束(取的到20),数列中总共有3个元素

np.linspace(2, 20, 3)

输出结果如下:

array([ 2., 11., 20.])

(7)使用logspace函数 生成一个等比数列,其中logspace(2, 20, 3)以10的2次方开始到10的20次方结束(取得到20),数列中总共3个元素

np.logspace(2, 20, 3)

输出结果如下:

array([1.e+02, 1.e+11, 1.e+20])

(8)使用reshape函数 改变数据的形状
将2*4*5的3维数据转换成4*10的二维数据
形状可变但元素总数是不可变的
reshape函数不会改变原来的ndarray,但是会得到新的ndarray是原数据的视图
视图的概念:多个变量使用一个内存空间
副本的概念:把原来的内存复制了一份放到新的内存空间里

np.ones((2, 4, 5)).reshape((4, 10))

(9)使用random 生成随机数

np.ones((2, 4, 5)).reshape((4, 10))

2.numpy数组的属性

(1)ndim表示维度的数量

(2)shape表示数组的形状

(3)dtype表示数组中元素的数据类型

arr2 = np.array(['aaaaaaa', 'bbbbbb', 'cccccc', 'dddddd'], dtype='|S4')
#其中S表示字符串类型,4表示arr2中的每个元素最多含有4个字符

输出结果为:

array([b'aaaa', b'bbbb', b'cccc', b'dddd'], dtype='|S4')

(4)size表示数组中元素的总个数

3.numpy的基本操作

(1)加法(减,乘,除类似(除法要判断除数是否为0))

arr = np.arange(2, 20, 2)
arr + 2 #数组中每个元素都加2

输出结果为:

array([ 2,  4,  6,  8, 10, 12, 14, 16, 18])
arr = np.arange(2, 20, 2)
arr2 = np.arange(0, 36, 4)
arr + arr2 #arr和arr2中的元素对应相加

输出结果为:

array([ 0,  4,  8, 12, 16, 20, 24, 28, 32])

(2)矩阵的乘法

mat1 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
        [10, 11, 12]
    ]
)
mat2 = np.array(
    [
        [3, 2, 1],
        [6, 4, 5],
        [7, 8, 3]
    ]
)
mat1.dot(mat2)#矩阵的乘法
np.matmul(mat1, mat2)#矩阵的乘法

(3)切片

首先要说明的一点是切片只是原数组的一个视图(视图的概念见上方)

先新建一个二维数组:

new_arr1 = np.array([
    [89, 95, 83],
    [79, 75, 77],
    [74, 51, 88]
])

得到第2行第2个元素

new_arr1[1, 1]
#或者
new_arr1[1][1]
#建议使用第一种方式

生成一个随机的3维数组

new_arr2 = np.empty((2, 3, 4))

取第一维第一行前3列

new_arr2[0, 0:1, 0:3]

输出结果为:

array([[1.16345781e-311, 7.85564377e-322, 0.00000000e+000]])

(4)矩阵的转置

转置只需要调用T或者transpose(),只需要强调一点T和transpose()函数产生的也是一个视图。

4.numpy的文件操作

(1)将数据以二进制的形式保存到磁盘

data1 = np.array([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
])
data2 = np.random.random((4, 5, 6))
#1.save写数据
np.save('data1', data1) #将多维数组存入文件自动添加后缀名为npy(二进制文件)
#2.load以二进制形式读取文件
data11 = np.load("data1.npy")#读取数据时需要加后缀名

(2)存取文本文件

#1.读取数据
help(np.loadtxt)
#fname 文件名
#dtype 数据类型
#comments 注释行符号定义
#delimiter 数据分隔符的定义
#converters 转换函数
#skiprows 跳过的行
#usecols 要用的列


arr4 = np.loadtxt('example.csv', delimiter=',')
from io import StringIO
c = StringIO(u'0 1\n2 3')
arrc = np.loadtxt(c)
np.genfromtxt('example.csv', delimiter=',') #类似于loadtxt

数据写入文件文本文件

arr5 = np.array([
    [1, 2, 3],
    [3, 4, 5]
])
np.savetxt('arr.csv', arr5, delimiter=',')
np.savetxt('arr.csv', arr5, delimiter=',', fmt="%d")#以整数的形式存入

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值