Numpy 常见函数及使用

本文后续边补充,边更新!

1. np.delete()

删除指定行

np.delete(x, i, axis=0)  #删除x矩阵 第i行

2. np.where()

返回输入数组中满足给定条件的元素的索引,返回值为元组类型。

import numpy as np
x = np.arange(9.).reshape(3,  3)
print ('我们的数组是:')
print (x)
print ( '大于 3 的元素的索引:')
y = np.where(x > 3)
print (y)
print ('使用这些索引来获取满足条件的元素:')
print (x[y])
结果:
我们的数组是:
[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
大于 3 的元素的索引(元组):
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
使用这些索引来获取满足条件的元素:
[4. 5. 6. 7. 8.]

3. np.load()

>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
>>> np.load('/tmp/123.npy')
array([[1, 2, 3],
       [4, 5, 6]])

>>> a=np.array([[1, 2, 3], [4, 5, 6]])
>>> b=np.array([1, 2])
>>> np.savez('/tmp/123.npz', a=a, b=b)
>>> data = np.load('/tmp/123.npz')
>>> data['a']
array([[1, 2, 3],
       [4, 5, 6]])
>>> data['b']
array([1, 2])
>>> data.close()

>>> X = np.load('/tmp/123.npy', mmap_mode='r')
>>> X[1, :]
memmap([4, 5, 6])

4.np.item()

可以获取在numpy数组上给定索引处找到的数据元素。

import the important module in python
import numpy as np

make an array with numpy
gfg = np.array([[1, 2, 3, 4, 5],
                [6, 5, 4, 3, 2]])

print(gfg.item((1, 2)))   ## 结果为4

5. 连接数组

函数描述concatenate()连接沿现有轴的数组序列stack()增加新一维度方式堆叠hstack()水平堆叠vstack()垂直堆叠dstack()深度堆叠

eg1.

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print ('沿轴 0 连接两个数组:')
print (np.concatenate((a,b)))    # 默认是0轴
print ('沿轴 1 连接两个数组:')
print (np.concatenate((a,b),axis = 1))
#结果
第一个数组:
[[1 2]
 [3 4]]
第二个数组:
[[5 6]
 [7 8]]
沿轴 0 连接两个数组:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
沿轴 1 连接两个数组:
[[1 2 5 6]
 [3 4 7 8]]

eg2.

print(np.stack((arr1, arr2),0)) # 堆叠后维度增加,axis=0/1效果相同
print(np.vstack((arr1, arr2)))
print(np.hstack((arr1, arr2)))
print(np.dstack((arr1, arr2)))
结果
[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
[[[ 1  7]
  [ 2  8]
  [ 3  9]]

 [[ 4 10]
  [ 5 11]
  [ 6 12]]]

6. 修改数组维度

从数组的形状中删除一维条目,及shape中是1的维度。
例如维度为(1,2,5)->(2,5), (3,4)->(3,4)

np.squeeze()

eg.

c  = np.arange(10).reshape(2,5)
np.squeeze(c)
c.shape   # (2,5)
d  = np.arange(10).reshape(1,2,5)
np.squeeze(d)
d.shape   # (2,5)

x = np.arange(9).reshape(1,3,3)
y = np.squeeze(x)
print (x.shape, y.shape)
结果
(1, 3, 3) (3, 3)

扩展数组的形状.

cat_mask = np.expand_dims(cat_mask, 0) # cat_mask从原来的[256,256]变为[1,256,256]

7. np.unique()

用于去除数组中的重复元素。
函数原型:

numpy.unique(arr, return_index, return_inverse, return_counts)
  • arr:输入数组,如果不是一维数组则会展开
  • return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储
  • return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储
  • return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
    eg.
a = np.array([5,2,6,2,7,5,6,8,2,9])
print (a)       # [5 2 6 2 7 5 6 8 2 9]

u = np.unique(a)
print (u)       # [2 5 6 7 8 9], 顺便排序了

u,indices = np.unique(a, return_index = True)
print (indices)     # [1 0 2 4 7 9]

8. 排序、条件筛选函数

用于给多个序列进行排序,想象成电子表格,优先排序后面的列。

numpy.lexsort()

eg.

nm =  ('raju','anil','ravi','amar')
dv =  ('f.y.',  's.y.',  's.y.',  'f.y.')
ind = np.lexsort((dv,nm))

print (ind)
print ([nm[i]  +  ", "  + dv[i]  for i in ind])
结果
[3 1 0 2]
['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']

9. 连续内存数组

Numpy中,随机初始化的数组默认都是C连续的,经过不规则的slice操作,则会改变连续性。 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。

np.ascontiguousarray()

eg.

>>> x = np.arange(8).reshape(2,4)
>>> np.ascontiguousarray(x, dtype=np.float32)
array([[0., 1., 2., 3.],
       [4., 5., 6., 7.]], dtype=float32)
>>> x.flags['C_CONTIGUOUS']
True

10. 统计频率

像直方图一样,统计元素出现频率,并返回ndarray。

np.bincount()
x=np.array([0,1,1,3,2,1,7])
print(np.bincount(x))
结果
[1 3 1 1 0 0 0 1]

11. np.argmax()

import numpy as np
三维数组
a = np.array([
              [
                  [1, 5, 5, 2],
                  [9, -6, 2, 8],
                  [-3, 7, -9, 1]
              ],

              [
                  [-1, 5, -5, 2],
                  [9, 6, 2, 8],
                  [3, 7, 9, 1]
              ]
            ])
print(np.argmax(a, axis=0))
结果:从[2,3,4]->[3,4]
[[0 0 0 0]
 [0 1 0 0]
 [1 0 1 0]]

Original: https://blog.csdn.net/weixin_36354875/article/details/126037652
Author: Darchan
Title: Numpy 常见函数及使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762133/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 彻底解决IDEA输出中文乱码问题

    本文一共有3种方法,针对的情况是输出中文乱码问题 问题描述 无法正确输出中文字符:(请正确分辨自己是哪一种乱码问题!) ; 解决方法 1、最容易想到 File -> Sett…

    Python 2023年11月7日
    057
  • 基于Scrapy的爬虫解决方案

    导语 | Scrapy是一个较为流行的Python爬虫框架,本文将简单介绍Scrapy的使用方法,并对一些常见问题提出解决方法。对于想快速上手爬虫的初学者来说,本文值得一阅。文章作…

    Python 2023年10月4日
    041
  • JavaScript简介

    HTML 用来定义网页的&…

    Python 2023年6月9日
    082
  • Mob秒验(一键登录注册)常见问题

    针对双卡双待手机只取当前有流量的卡号。 仍任支持使用传统验证方式登录,例如验证码登录等 不是的,电信支持4G,5G网络取号,移动, 联通支持5G,4G, 3G, 2G网络取号但在非…

    Python 2023年9月30日
    041
  • 如何使用Python处理Missing Data

    Original: https://www.cnblogs.com/123456feng/p/16092678.htmlAuthor: 蚂蚁ailingTitle: 如何使用Pyt…

    Python 2023年5月24日
    067
  • 【机器学习】李宏毅——Anomaly Detection(异常检测)

    异常检测概述 首先要明确一下什么是异常检测任务。对于异常检测任务来说,我们希望能够通过现有的样本来训练一个架构,它能够根据输入与现有样本之间是否足够相似,来告诉我们这个输入是否是异…

    Python 2023年10月28日
    034
  • python前端学习——-Flask框架基础(建议收藏)

    Flask框架基础 下载并安装Flask框架 Flask基础 * 第一个Flask应用 开启调试模式 路由 * 变量规则 构造URL HTTP方法 模板 * 语法格式 模板变量 控…

    Python 2023年8月11日
    080
  • 爬虫—Scrapy_redis

    一:scrapyredis介绍 1.1Scrapy_redis的基础概念 为什么要学习Scrapy_redis:Scrapy_redis在scrapy的基础上实现了更多,更强大的功…

    Python 2023年10月3日
    050
  • 2023跨年代码(烟花+雪花)

    一眨眼,马上就2023年了,祝大家在新的一年里:身体健康平安,生活充实饱满,事业步步高升,心情阳光灿烂,财运滚滚而来,家庭美满幸福,新年开心快乐! 本文将给大家分享一些跨年代码,基…

    Python 2023年8月3日
    080
  • 测试用例大全

    一、基本功能测试: 输入正确的用户名和密码登录成功 输入错误的用户名密码登录失败 用户名正确,密码错误,是否提示输入密码错误? 用户名错误,密码正常,是否提示输入用户名错误? 用户…

    Python 2023年6月12日
    069
  • 利用python脚本自动登录华农校园网(附程序)

    最近刷b站,看到一位up主利用python制作了一个校园网自动连接的程序,看完很是心动。想着自己也学过python,准备尝试一下。前前后后摸索了两天,这里分享一下实现过程。 获取程…

    Python 2023年11月2日
    062
  • 从 0 开始最详细的 ChatGPT 注册教程

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月3日
    035
  • Python – PyPDF2模块的简单使用

    1.简介 PyPDF的前身是PyPDF包在2005年发布,该包的最后一个版本发布于2010年,后来大约经过一年左右,名为Phasit的公司赞助PyPDF的一个分支后来命名为PyPD…

    Python 2023年11月1日
    052
  • 坦克大战小游戏的实现

    坦克大战小游戏的实现 1 设计任务1.1设计目的运用所学Python知识,完成坦克大战小游戏,通过实践加强对所学知识的理解和巩固。1.2设计内容坦克大战小游戏1.3设计指标或者要求…

    Python 2023年9月23日
    042
  • 【Django | 安全防护】CSRF跨站伪请求和SQL注入攻击

    🤵‍♂️ 个人主页: @计算机魔术师👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 🌐 推荐一款找工作神器网站: 牛客网🎉🎉|笔试题库|面试经验|实习招聘内推还没账户的…

    Python 2023年8月6日
    080
  • Python迭代器

    最近在看Python基础教程(第三版),是之前python课的课本,但是之前没读过,虽然python一直用得挺多,但重新读读收获还挺大。这里做个笔记。先是迭代器是什么并简单实现一个…

    Python 2023年5月23日
    0112
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球