python学习(七)----numpy的使用

一、N维数组创建

import numpy as np
import random

# 查看numpy的版本
print(np.__version__)

# 产生10个1~50间的随机数据,并加入到一维numpy数组a中
a1 = np.array(np.random.randint(1, 50, 10))
print("第一个元素为:",a1[0])
print(a1)
print("维数为:", a1.ndim)
# 负索引表示从最后一个元素开始
print("最后一个元素为: ", a1[-1])

# 产生二维数组
a2 = np.array( [ [1, 2, 3], [6, 7, 0] ] )    # 注意此处外围的一个[]
print("第一个元素为:", a2[0, 0])
print(a2)
print("维数为:", a2.ndim)

# 产生三维数组
a3 = np.array([ [ [1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6] ] ] )    # 注意此处外围的两个[]
print("第一个元素为:", a3[0, 0,0])
print("第一个元素为:",a3)
print("维数为:", a3.ndim)

# 产生高维数组   ndmin表示维数
a4 = np.array([1, 2, 3, 4], ndmin=4)
print("第一个元素为:", a4[0, 0, 0, 0])
print(a4)
print("维数为:", a4.ndim)

二、对N维数组的操作

import numpy as np

# 一维数组的裁剪
a = np.array([1, 2, 3, 4, 5, 6, 7])

# 返回索引 1~5 的元素
print(a[1:5])

# 返回索引 1~末尾 的元素
print(a[1:])

# 从末尾开始的索引5到末尾开始的索引1遍历
print(a[-5:-1])

# 有步长的裁剪(返回索引 1~5 的元素,步长为2)
print(a[1:5:2])

# 二维数组的裁剪
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

# 行裁剪 从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片
print(arr[1, 1:4])

# 列裁剪 从第二个元素开始,对从索引 0 到索引 2(不包括)的元素进行切片
print(arr[0:2, 2])

# 行列裁剪 从两个元素裁切索引 1 到索引 4(不包括),这将返回一个 2-D 数组
print(arr[0:2, 1:4])

三、视图与副本

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

# 副本不受到对原始数组所做更改的影响。
x = a.copy()
x[0] = 0
print(x)     # 0,2, 3, 4, 5, 6
print(a)     # 1,2, 3, 4, 5, 6

# 视图受到对原始数组所做更改的影响。
x = a.view()
a[0] = 0
print(x)     # 0,2, 3, 4, 5, 6
print(a)     # 0,2, 3, 4, 5, 6

# 副本拥有数据,而视图不拥有数据
x = a.copy()
y = a.view()

print(x.base)   # 返回none
print(y.base)   # 0,2, 3, 4, 5, 6

四、数组拆分与搜索

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])

# 将数组分为四个部分
newarr = np.array_split(arr, 4)
print(newarr)

# 搜索值为偶数的元素的索引
x = np.where(arr%2 == 0)
print(x)

五、数组过滤

import numpy as np
# 如果索引处的值为 True,则该元素包含在过滤后的数组中;
# 如果索引处的值为 False,则该元素将从过滤后的数组中排除。
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

此外还可以直接从数组创建过滤器

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])
# 过滤奇数
filter_arr = arr % 2 == 0

newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

六、数学运算


import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = np.array([1, 2, 3, 4, 5, 6])
c = np.array([[1, 2, 3], [4, 5, 6],[7, 8, 9]])
# a.b
value = np.dot(a, b)
print(value)

# a,b的外积 a,b必须为一维向量
print(np.outer(a,b))

# a,b的张量积 结果为一维数组
print(np.kron(a, b))

# axb 向量必须是三维或者二维
print(np.cross(c, c))

# 矩阵的转置
print(np.transpose(c))    # or print(c.T)

# a**2
print(a**2)

# 矩阵a-矩阵b  矩阵a+矩阵b
print(a-b)
print(a+b)

# 求所有元素的和、求所有元素的最大值
print(a.sum())
print(a.max())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值