前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Numpy 如何操作数组

Numpy 如何操作数组

作者头像
村雨遥
发布于 2022-06-15 01:25:42
发布于 2022-06-15 01:25:42
59000
代码可运行
举报
文章被收录于专栏:JavaParkJavaPark
运行总次数:0
代码可运行

数组类型

Numpy类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*--coding:utf-8--*--
from numpy import *
"""
复数数组
"""
a = array([1 + 1j, 2, 3, 4])
# 数组类型
print('type:', a.dtype)
# 实部
print(a.real)
# 虚部
print(a.imag)
# 复共轭
print(a.conj())

"""
指定数组类型
"""
a = array([1, 2, 4, 9, 10], dtype=float32)
print(a)

a = array([0, 1.8, 3.3, 4.1], dtype=uint8)
print(a)

"""
类型转换
"""
a = array([1.5, -3, -3.3],
         dtype=float32)
b = asarray(a, dtype=float64)
print('asarray类型转换:', b)

c = a.astype(uint8)
print('astype类型转换:', c)

a = array((1,2,3,4), dtype=int32)
d = a.view(uint8)
print('view类型转换:', d)

数组方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*--coding:utf-8--*--
from numpy import *
from numpy.random import rand
"""
求和
"""
a = array([[1,2,3], [4,5,6]])
# 所有元素和
print('all:', sum(a))
# 指定求和维度
print('维度和:', sum(a, axis=0))
print('维度和:', sum(a, axis=-1))

"""
求积
"""
# 所有元素积
print('all:', prod(a))
# 指定求积维度
print('维度积:', prod(a, axis=0))
print('维度积:', prod(a, axis=1))

"""
最大最小值
"""
a = rand(3, 4)
print(a)
# 全局最小
print('all:', a.min())
# 某个轴最小
print('axis:', a.min(axis=1))
# 全局最大
print('all:', a.max())
# 某个轴最大
print('axis:', a.max(axis=-1))

# 最大最小值的位置
print('max in: ', a.argmax())
print('min in ', a.argmin())

"""
均值
"""
a = array([[1,2,3],[4,5,6]])
print('avg:', a.mean())
print('avg: ', average(a, axis=0))

"""
标准差
"""
# 标准差
print('std: ', a.std(axis=1))
# 方差
print(a.var(axis=1))
print(var(a, axis=-1))
print(std(a, axis=-1))

# clip方法,将数值限制在某个范围
print(a)
# 小于2的变成2,大于4的变成4
print(a.clip(2, 4))

# ptp方法,计算最大值和最小值之差
print(a.ptp(axis=1))
print(a.ptp())

# round方法
a = array([1.35, 2.5, 1.5])
print(a.round())
# 近似到一位小数
print(a.round(decimals=1))

数组排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*-- coding:utf-8 --*--
from numpy import *
"""
数组排序
"""

# sort函数
names = array(['Bob', 'Sue', 'Jan', 'Ad'])
print('names sort:', sort(names))
weights = array([20, 93, 53, 62])
print('weights sort:', sort(weights))

# argsort函数
ordered_indices = argsort(weights)
print(ordered_indices)
print(weights[ordered_indices])

"""
二维数组排序
"""
a = array([
        [.2, .1, .5],
        [.4, .8, .3],
        [.9, .6, .7]
    ])
print('all: \n', sort(a))
print('axis: \n', sort(a, axis=0))

"""
searchsorted函数,接受两个参数,第一个必须是已排序的数组
"""
sorted_array = linspace(0, 1, 5)
values = array([.1, .8, .3, .31, .9, .45])
print('searcgsorted: ', searchsorted(sorted_array, values))

数组形状

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
数组形状
"""
# --*-- coding:utf-8 --*--
from numpy import *
# 修改数组形状
a = arange(6)
print('origin: \n', a)
a.shape = 2, 3
print('after modified: \n', a)
print('after reshape: \n', a.reshape(3, 2))

# 使用newaxis增加数组维数
a = arange(3)
print('shape:', shape(a))
y = a[newaxis, :]
print(shape(y))
print(y)
y = a[newaxis, newaxis, :]
print(shape(y))
print(y)

# squeeze方法去除多余的轴
a = arange(6)
a.shape = (2, 1, 3)
b = a.squeeze()
print('shape of b:', b.shape)

# 数组转置
"""
PS:
    1、对于复述数组,转置不返回复共轭,只是单纯交换轴的位置
    2、转置可以作用于多维数组
"""
print(a)
print('transpose: \n', a.transpose())

print(a.T)

# 数组连接
x = array([
        [0,1,2],
        [10,11,12]
    ])
y = array([
        [50,51,52],
        [60,61,62]
    ])

z = concatenate((x, y))
print(z)

# Flatten数组,将多维数组转化为1维数组,返回数组的复制,不改变原数组的值
a = array([[0,1],
           [2,3]])
b = a.flatten()
print(b)

# flat属性,相当于返回所有元组组成的一个迭代器
print(a.flat)

# reval方法,将多位数组转化为1维数组
b = a.ravel()
print(b)

# atleast_xd函数,保证数组至少有x维
x = 1
print('1d:',atleast_1d())

a = array([1,2,3])
b = atleast_2d(a)
print('2d:', b)

c = atleast_3d(b)
print('3d: ', c)

对角线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*--coding:utf-8--*--
import numpy as np
"""
对角线
"""
a = np.array([11,22,33,44,55,66,77,88,99])
a.shape = 3, 3
print(a)

# 对角线元素
print('all :\n', a.diagonal())

# 对角线元素偏移,正数代表右移,负数代表左移
print('左移:\n', a.diagonal(offset=-1))
print('右移:\n', a.diagonal(offset=1))

# 更新对角线的值
i = [0, 1, 2]
a[i, i] = 20
print('update: \n', a)

# 修改次对角线的值
i = np.array([0, 1])
a[i, i+1] = 21
print('修改次对角线:\n', a)

数组与字符串的转换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*--coding:utf-8--*--
import numpy as np
"""
数组与字符串的转换
"""
# tostring方法
a = np.array([[1, 2], [3, 4]], dtype = np.uint8)
print('a: ', a.tostring())
# 按照列读取数据
print('a Fortran:', a.tostring(order='F'))

# fromstring函数,从字符串中独处数据,但要指定类型
s = a.tostring()
a = np.fromstring(s, dtype=np.uint8)
a.shape = 2, 2
print(a)

生成数组的函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# --*--coding:utf-8--*--
import numpy as np
"""
生成数组的函数
"""
# arange(start, stop=None, step=1, dtype=None),类似range函数,返回数组
# 允许非整数值输入,产生一个菲整形的数组
a = np.arange(5)
print(a)

# linspace(start, stop, N),产生N个等距分布与【】
print(np.linspace(0, 10, 5))

# logspace(start, stop, N),产生N个对数等距分布的数组,默认以10为底
print(np.logspace(0, 8, 5))

# meshgrid,二维平面中生成一个网格
x_lable = np.linspace(-1, 1, 5)
y_lable = np.linspace(-1, 1, 5)
x, y = np.meshgrid(x_lable, y_lable)
print(x, y, end='\n')

# 1、ogrid(start:end:step):meshgrid(indexing='ij', sparse=True),生成列矩阵
# 2、mgrid(start:end:step): meshgrid(indexing='ij', sparse=False),生成行矩阵
x, y = np.ogrid[-10:10:5, 10:30:5]
print('{} \n {}'.format(x, y))

# r_:产生行向量
# c_:产生列向量

print(np.r_[1:10:2])
print(np.c_[1:10:2])

# ones(shape, dtype),定制一个全1的数组,数组类型可指定
# zeros(shape, dtype),定制一个全0的数组,数组类型可指定
# empty(shape, dtype, order),产生一个指定大小的数组(指向的内存未初始化,故值随机)
print('全1:\n', ones([3, 5], dtype = np.float32))
print('全0:\n', zeros([3, 5], dtype = np.float32))
print(np.empty(5))

# empty_like(array)、ones_like(array)、zeros_like(array),产生一个与a大小一样,类型一样的对应数组
a = np.arange(0, 10, 2)
print(a)
print('empty like:\n', np.empty_like(a))
print('zeros like:\n', np.zeros_like(a))
print('ones like:\n', np.ones_like(a))

# identity(n, dtype),产生一个n*n的单位矩阵
print('identity: \n', np.identity(5))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
numpy 100题练习 <二>
上次发的numpy 100题练习 <一>不知道大家学的咋样了大概又放在收藏夹里吃灰了吧,我们加班加点终于把后一半给翻译出来啦~希望各位观众老爷们喜欢~
派大星的数据屋
2022/04/02
8820
Python 之NumPy
NumPy的主要对象是同质的多维数组。它是一个有明确索引的相同类型的元素组成的表。在NumPy中维度称之为轴,轴数称之为列。
py3study
2020/01/13
6660
NumPy教程(Numpy基本操作、Numpy数据处理)
介绍几种 numpy 的属性: • ndim:维度 • shape:行数和列数 • size:元素个数 使用numpy首先要导入模块
用户7886150
2021/01/05
1.7K0
100个Numpy练习【3】
Numpy是Python做数据分析必须掌握的基础库之一,非常适合刚学习完Numpy基础的同学,完成以下习题可以帮助你更好的掌握这个基础库。
YingJoy_
2018/03/01
1.4K0
100个Numpy练习【3】
NumPy 1.26 中文官方指南(一)
NumPy 是 Python 中科学计算的基础包。 这是一个提供多维数组对象、各种派生对象(如掩码数组和矩阵)以及一系列用于数组快速操作的例程的 Python 库,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。
ApacheCN_飞龙
2024/04/26
1.3K0
NumPy 1.26 中文官方指南(一)
100 个 Numpy 实用小栗子(下)
(提示: repeat, np.roll, np.sort, view, np.unique)
程序员小二
2022/01/14
6920
python学习之numpy使用
#NumPy数据库学习 #Numpy包含一下特点: ''' 1.强大的N维数组对象。 2.成熟的函数库。 3.用于集成c/c++和Fortran代码工具 4.实用的线性代数,傅里叶变换和随机生成函数。 ''' import numpy as np #4.1:属性
py3study
2020/01/07
8970
NumPy 使用教程
如果你使用 Python 语言进行科学计算,那么一定会接触到 NumPy。NumPy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力。除此之外,NumPy 还内建了大量的函数,方便你快速构建数学模型。
用户7886150
2021/01/08
2.5K0
【机器学习】 搭建模型第一步:你需要预习的NumPy基础都在这了
NumPy 主要的运算对象为同质的多维数组,即由同一类型元素(一般是数字)组成的表格,且所有元素通过正整数元组进行索引。在 NumPy 中,维度 (dimension) 也被称之为轴线(axes)。
竹清
2018/08/31
2.2K0
Python开发之numpy的使用
一、注意几点 NumPy 数组在创建时有固定的大小,不同于Python列表(可以动态增长)。更改ndarray的大小将创建一个新的数组并删除原始数据。 NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。数组的元素如果也是数组(可以是 Python 的原生 array,也可以是 ndarray)的情况下,则构成了多维数组。 NumPy 数组便于对大量数据进行高级数学和其他类型的操作。通常,这样的操作比使用Python的内置序列可能更有效和更少的代码执行。 二、num
MiChong
2020/09/24
1.5K0
100道练习带你玩转Numpy
Numpy是用Python做数据分析所必须要掌握的基础库之一,它可以用来存储和处理大型矩阵,并且Numpy提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库,专为进行严格的数字处理而产生。
统计学家
2019/08/09
1.1K0
100道练习带你玩转Numpy
搭建模型第一步:你需要预习的NumPy基础都在这了
NumPy 主要的运算对象为同质的多维数组,即由同一类型元素(一般是数字)组成的表格,且所有元素通过正整数元组进行索引。在 NumPy 中,维度 (dimension) 也被称之为轴线(axes)。
机器之心
2018/07/26
2.3K0
收藏 | Numpy详细教程
NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
Python数据科学
2018/12/25
2.5K0
Numpy闯关100题,我闯了95关,你呢?
对于Numpy,我讲的不多,因为和Pandas相比,他距离日常的数据处理更“远”一些。
用户6888863
2021/06/15
1.7K0
Numpy 学习笔记
在学习 numpy 之前,你总得在 python 上装上 numpy 吧,安装命令非常简单:
EmoryHuang
2022/10/31
6370
NumPy 最详细教程(1):NumPy 数组
Numpy 是 Python 中科学计算的核心库,NumPy 这个词来源于 Numerical 和 Python 两个单词。它提供了一个高性能的多维数组对象,以及大量的库函数和操作,可以帮助程序员轻松地进行数值计算,广泛应用于机器学习模型、图像处理和计算机图形学、数学任务等领域。
丹枫无迹
2019/03/20
3.7K0
numPy的一些知识点
numpy 早就用过了,但是长时间不用的话对其中的一些知识点又会忘记,又要去网上翻看各种博客,干脆自己把常用的一些东西记下来好了,以后忘了的话直接看自己写的笔记就行了
棒棒鸡不棒
2022/09/01
9690
numPy的一些知识点
numpy入门
numpy中最主要的对象是同质数组array,也就是说数组中的元素类型都是一样的。数组的维度也称之为axis,axis的的个数称之为秩rank。
用户2936342
2018/08/27
9800
numpy入门
numpy的基本操作
http://blog.csdn.net/pipisorry/article/details/39496831
用户7886150
2021/01/02
1K0
相关推荐
numpy 100题练习 <二>
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档