Numpy学习

本文详细介绍NumPy库的基础操作,包括数组创建、基本属性查询、数学运算、数组索引及切片、数组形状调整等核心功能,并展示了如何利用NumPy进行矩阵运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding: UTF-8 -*-

import numpy as np

from pylab import *

from numpy.linalg import *


a = np.arange(20).reshape(4,5) #arange创建以为数组,reshape可以修改数组的形状。  reshape(4,5)则可以把一维数组改为一个45列的数组
print(a)
print(a.dtype)#array.dtype可以显示数组的数据类型
print(a.ndim)#farray.ndim显示数组的轴数,即数组的秩
print(a.shape)#显示数组的形状,几行几列
print(a.itemsize)#数组中每个元素的字节大小
print(a.data)#包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。


print(type(a))#可以用type(a)来查看对象的属性

#接下来创建数组
#1:用array函数来创建数组

a=np.array([2,3,4])
print(a)
print(a.dtype)#查看每个数数字的类型   int32
b=np.array([1.2,4.5,9.9])
print(b)
print(b.dtype)#float64


a= np.array([(1.3,4,5),(4,5,6)])
print(a)



c = np.array([[1,2],[3,4]],dtype = complex)#在创建数组的时候  用dtype指定数据类型
print(c)



a = np.zeros([3,4])#zeros函数创建一个全为0的数组
print(a)


b=np.ones([2,2])#ones()可以创建一个全为1的数组
print(b)


c=np.empty([3,3])#empty创建一个随机的数组
print(c)



d=np.arange(10,100,10)#arange函数可以用来创建数列,但是返回的是一个一维数组
print(d)



a= np.array([[20,30,40,50],[20,30,40,50]])
b=np.array([[0,1,2,3],[0,1,2,3]])
print(a)
print(b)
print(a-b)#数组的加减乘除  只是维度相等的数组上每个位置上的数字加减乘除

print(a+b)
print(a*b)

#若是要算矩阵乘法,则需要dot函数


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

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

print(a)
print(b)

print(np.dot(a,b))




a= np.arange(12).reshape(3,4)
print(a)

print(a.sum(axis=0)) #指定axis参数可以把运算应用到数组指定的轴上,比如a.sum(axis=0)就是将每列的数据相加
print(a.sum(axis=1))#对每列相加

print(a.min(axis=0))#求每列的最小值
print(a.cumsum(axis=1))#行方向迭代
print(a.cumsum(axis=0))#列方向迭代


b=np.arange(3)
print(b)
print(np.exp(b))
print(np.sqrt(b))

c=np.array([1,-1,3])
print(np.add(b,c))



a=np.arange(10)**3
print(a)

print(a[2])
print(a[2:5])
a[:6:2]=1000 #从开始到第六个数,每2个数中的第二个变成1000
print(a)
print(a[6])
print(a[::-1])#反转一维数组,这么神奇,第一次见

for i  in   a :
    print(i**3)


def f(x,y):
    return 10*x+y

b = np.fromfunction(f,(5,4),dtype=int)#fromfunction创建的是函数的数组,具体这么来理解。第一个参数是函数,第二个参数是数组的shape,即几行几列。第一行元素则是将(0,0),(0,1),(0,2),(0,3),第二行(1,0),(1,1),(1,2),(1,3print(b)
print(b[2,3])
print(b[0:5,1])
print(b[1:5])#python里的数组是左闭右开的一个区间      比如[1:5] >=1  <5
print(b[1:4,1])
print(b[-1])


for element in b.flat:#   array.flag属性,可以将多维数据中的元素一一的列举出来,当然也可以对元素进行计算
    print(element)

#数组的形状shape
a=np.arange(10).reshape(2,5)
print(a)

print(a.ravel())  #array.ravel()函数可以将数组中的元素一一展开,变成一维数组

a.shape=(5,2)#shape函数改变数组的形状
print(a)
a.transpose()
print(a)


a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
print(a)
print(b)
print(vstack((a,b)))#vstack纵向合并数组
print(hstack((a,b)))#hstack横向合并数组

print(column_stack((a,b)))#将数组进行列方向合并
print(row_stack((a,b)))#将数组进行行方向合并

#通过数组索引数组
a=np.arange(12)**2  #被索引的数组
print(a)
b=np.array([1,1,3,8,5])#索引数组
print(a[b]) #a[b]则是用b数组去索引a数组

c=np.array([[3,4],[5,6]])#索引数组也可以是二维的,这样生成的数组也是二维的
print(a[c])


#通过bool来索引数组
a=np.arange(12).reshape(3,4)
b=a>4
print(b)
print(a[b])
a[b]=0
print(a)




#矩阵介绍

A= matrix('1.0 2.0;3.0 4.0')
print(A)
print(type(A))
print (A.T) #A.T矩阵的转至   即矩阵的变化,行列变换

X=matrix('5.0 7.0')
Y=X.T
print(Y)#矩阵X的转至

print(A*Y)
print(solve(A,Y))




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值