python数组自增_Numpy学习笔记

本文详细介绍了Numpy库的核心概念,包括ndarray对象的创建、属性、类型,以及算术运算、矩阵乘法、自增自减等基本操作。此外,还探讨了聚合函数、索引切片、迭代方法、形状改变和数组操作,并展示了如何在Numpy中进行文件的二进制读写和CSV数据的加载。
摘要由CSDN通过智能技术生成

Numpy Learning

1.ndarray:Numpy的核心

1.1 特点:1.同质

2.大小固定

1.2 创建ndarray对象——array()/zeros()/ones()/reshape()/random()

import numpy as np

#array()函数创建ndarray对象

a=np.array([1,2,3])

b=np.array([[1,2,3],[4,5,6]])

#zeros()函数生成由shape参数指定维度信息、元素值均为零

c=np.zeros((3,3))

print c

#ones()函数生成由shape参数指定维度信息、元素值均为1

d=np.ones((3,3))

print d

#reshape()按照指定形状改变原数组

e=np.arange(0,12).reshape(3,4)

f=np.linspace(0,10,5)

print e

print f

#random()函数创建一个数组,随机值填充

g=np.random.random((3,3))

print g

[[ 0. 0. 0.]

[ 0. 0. 0.]

[ 0. 0. 0.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]

[ 1. 1. 1.]]

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[ 0. 2.5 5. 7.5 10. ]

[[ 0.73732349 0.66581575 0.34289376]

[ 0.42007847 0.42966379 0.52146679]

[ 0.46736048 0.70184992 0.78314536]]

1.3 判断是否是ndarray对象 ——type()

type(a)

numpy.ndarray

1.4 ndarray对象的轴、长度、型属性

print a.ndim #轴数量

print a.size #对象的长度

print a.shape #对象的型

1.5 数据类型 dtype选项

f=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],dtype=complex)

print f.dtype

complex128

2. 基本操作

2.1 算法运算符基本运算是元素级运算符对数组每一个元素的操作

org=np.arange(5)

add=org+4

minus=org-2

muti=org*3

divi=org/3

sin=np.sin(org)

sqrt=np.sqrt(org)

print org

print add

print muti

print divi

print sin

print sqrt

[0 1 2 3 4]

[4 5 6 7 8]

[ 0 3 6 9 12]

[0 0 0 1 1]

[ 0. 0.84147098 0.90929743 0.14112001 -0.7568025 ]

[ 0. 1. 1.41421356 1.73205081 2. ]

2.2 矩阵积dot()函数,不是元素级的

A=np.arange(0,9).reshape(3,3)

B=np.arange(2,11).reshape(3,3)

C=np.dot(A,B)

print A

print B

print C

[[0 1 2]

[3 4 5]

[6 7 8]]

[[ 2 3 4]

[ 5 6 7]

[ 8 9 10]]

[[ 21 24 27]

[ 66 78 90]

[111 132 153]]

2.3 自增和自减numpy甚至python没有++ 和--运算符,但是可以使用+=和-=来达到目的——这也是元素级的运算

a=np.arange(4)

print a

a+=1

print a

[0 1 2 3]

[1 2 3 4]

2.4 聚合函数 ##聚合函数是对一组值进行操作,返回一个唯一值作为结果:sum()/min()/max()mean()/std()

a=np.array([3.3,1.5,5.6,8.4,5.1])

print a.sum()

print a.min()

print a.max()

print a.mean()

print a.std()

23.9

1.5

8.4

4.78

2.31637648063

2.5 索引、切片、迭代方法方法同python列表的处理方法

a=np.arange(10,16)

print a

print a[4]

print a[-1]

print a[1:3]

for x in a:

print x

[10 11 12 13 14 15]

14

15

[11 12]

10

11

12

13

14

15

对于迭代处理,如果想用函数处理每一行或者每一列,返回一个数值作为结果,最好使用以下函数:

apply_along_axis()

A=np.arange(0,16).reshape(4,4)

print A

a=np.apply_along_axis(np.mean,axis=0,arr=A) #axis选项为0,按列迭代操作

b=np.apply_along_axis(np.mean,axis=1,arr=A) #axis选项为1,按行迭代操作

print a

print b

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]]

[ 6. 7. 8. 9.]

[ 1.5 5.5 9.5 13.5]

2.6 形状改变reshape()和ravel()函数

A=np.arange(10,20)

print A

B=A.reshape(2,5)

print B

#A.shape=(2,5)

#print A

C=B.ravel()

print C

[10 11 12 13 14 15 16 17 18 19]

[[10 11 12 13 14]

[15 16 17 18 19]]

[10 11 12 13 14 15 16 17 18 19]

2.7 数组操作

(1) 连接数组vstack()/hstack()/column_stack()/row_stack()

Numpy是使用栈的概念来合并数组的,把数组执行垂直入栈的操作,按行vstack()/row_stack()入栈,按列hstack()/column_stack()入栈

A=np.ones((3,3))

B=np.zeros((3,3))

C=np.vstack((A,B)) #按行入栈,数组的型是6*3

E=np.row_stack((A,B))#按行入栈,数组的型是6*3

print C

print E

D=np.hstack((A,B)) #按列入栈,数组的型是3*6

F=np.column_stack((A,B))#按列入栈,数组的型是3*6

print D

print F

[[ 1. 1. 1.]

[ 1. 1. 1.]

[ 1. 1. 1.]

[ 0. 0. 0.]

[ 0. 0. 0.]

[ 0. 0. 0.]]

[[ 1. 1. 1.]

[ 1. 1. 1.]

[ 1. 1. 1.]

[ 0. 0. 0.]

[ 0. 0. 0.]

[ 0. 0. 0.]]

[[ 1. 1. 1. 0. 0. 0.]

[ 1. 1. 1. 0. 0. 0.]

[ 1. 1. 1. 0. 0. 0.]]

[[ 1. 1. 1. 0. 0. 0.]

[ 1. 1. 1. 0. 0. 0.]

[ 1. 1. 1. 0. 0. 0.]]

(2) 数组切分vsplit()/hsplit()

A=np.arange(64).reshape(8,8)

print A

print "______________________________"

[B,C]=np.hsplit(A,2)

print B

print C

print "______________________________"

[D,E]=np.vsplit(A,2)

print D

print E

[[ 0 1 2 3 4 5 6 7]

[ 8 9 10 11 12 13 14 15]

[16 17 18 19 20 21 22 23]

[24 25 26 27 28 29 30 31]

[32 33 34 35 36 37 38 39]

[40 41 42 43 44 45 46 47]

[48 49 50 51 52 53 54 55]

[56 57 58 59 60 61 62 63]]

______________________________

[[ 0 1 2 3]

[ 8 9 10 11]

[16 17 18 19]

[24 25 26 27]

[32 33 34 35]

[40 41 42 43]

[48 49 50 51]

[56 57 58 59]]

[[ 4 5 6 7]

[12 13 14 15]

[20 21 22 23]

[28 29 30 31]

[36 37 38 39]

[44 45 46 47]

[52 53 54 55]

[60 61 62 63]]

______________________________

[[ 0 1 2 3 4 5 6 7]

[ 8 9 10 11 12 13 14 15]

[16 17 18 19 20 21 22 23]

[24 25 26 27 28 29 30 31]]

[[32 33 34 35 36 37 38 39]

[40 41 42 43 44 45 46 47]

[48 49 50 51 52 53 54 55]

[56 57 58 59 60 61 62 63]]

2.8 对象的副本和视图Numpy中,所有赋值都不会为数组和数组中的元素创建副本

a=np.array([1,2,3,4,5,6])

print a

b=a[2:4]

b[1]=99

#改变b的数值大小,改变的即是a的数值大小

print a

[1 2 3 4 5 6]

[ 1 2 3 99 5 6]

3 Numpy文件的读写

3.1 二进制文件的读写save()/load()函数

data=np.arange(16).reshape(4,4)

print data

np.save("saved_data",data) #保存data数据到saved_data.npy文件

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]]

load_data=np.load("saved_data.npy")

print load_data

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]]

3.2 读取文件中列表形式的数据genfromtxt()函数

这个函数三个参数:存放数据的文件名、用于分割值得字符、是否含有标题

data=np.genfromtxt("data.csv",delimiter=",",names=True)

print data

[( 1., 124., 21.4, 254.) ( 2., 54., 5.1, 42.)

( 3., 52., 8.4, 598.)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值