python数组初始化_Python Numpy 数组的初始化和基本操作

Python 是一种高级的,动态的,多泛型的编程语言。Python代码很多时候看起来就像是伪代码一样,因此你可以使用很少的几行可读性很高的代码来实现一个非常强大的想法。

一.基础:

Numpy的主要数据类型是ndarray,即多维数组。它有以下几个属性:

ndarray.ndim:数组的维数

ndarray.shape:数组每一维的大小

ndarray.size:数组中全部元素的数量

ndarray.dtype:数组中元素的类型(numpy.int32, numpy.int16, and numpy.float64等)

ndarray.itemsize:每个元素占几个字节

例子:

>>> import numpy as np

>>> a = np.arange(15).reshape(3, 5)

>>> a

array([[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14]])

>>> a.shape

(3, 5)

>>> a.ndim

2

>>> a.dtype.name

'int64'

>>> a.itemsize

8

>>> a.size

15

>>> type(a)

>>> b = np.array([6, 7, 8])

>>> b

array([6, 7, 8])

>>> type(b)

二.创建数组:

使用array函数讲tuple和list转为array:

>>> import numpy as np

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

>>> a

array([2, 3, 4])

>>> a.dtype

dtype('int64')

>>> b = np.array([1.2, 3.5, 5.1])

>>> b.dtype

dtype('float64')

多维数组:

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

>>> b

array([[ 1.5, 2. , 3. ],

[ 4. , 5. , 6. ]])

生成数组的同时指定类型:

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )

>>> c

array([[ 1.+0.j, 2.+0.j],

[ 3.+0.j, 4.+0.j]])

生成数组并赋为特殊值:

ones:全1

zeros:全0

empty:随机数,取决于内存情况

>>> np.zeros( (3,4) )

array([[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.]])

>>> np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified

array([[[ 1, 1, 1, 1],

[ 1, 1, 1, 1],

[ 1, 1, 1, 1]],

[[ 1, 1, 1, 1],

[ 1, 1, 1, 1],

[ 1, 1, 1, 1]]], dtype=int16)

>>> np.empty( (2,3) ) # uninitialized, output may vary

array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260],

[ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

生成均匀分布的array:

arange(最小值,最大值,步长)(左闭右开)

linspace(最小值,最大值,元素数量)

>>> np.arange( 10, 30, 5 )

array([10, 15, 20, 25])

>>> np.arange( 0, 2, 0.3 ) # it accepts float arguments

array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

>>> np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2

array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

>>> x = np.linspace( 0, 2*pi, 100 ) # useful to evaluate function at lots of points

三.基本运算:

整个array按顺序参与运算:

>>> a = np.array( [20,30,40,50] )

>>> b = np.arange( 4 )

>>> b

array([0, 1, 2, 3])

>>> c = a-b

>>> c

array([20, 29, 38, 47])

>>> b**2

array([0, 1, 4, 9])

>>> 10*np.sin(a)

array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])

>>> a<35

array([ True, True, False, False], dtype=bool)

两个二维使用*符号仍然是按位置一对一相乘,如果想表示矩阵乘法,使用dot:

>>> A = np.array( [[1,1],

... [0,1]] )

>>> B = np.array( [[2,0],

... [3,4]] )

>>> A*B # elementwise product

array([[2, 0],

[0, 4]])

>>> A.dot(B) # matrix product

array([[5, 4],

[3, 4]])

>>> np.dot(A, B) # another matrix product

array([[5, 4],

[3, 4]])

内置函数(min,max,sum),同时可以使用axis指定对哪一维进行操作:

>>> b = np.arange(12).reshape(3,4)

>>> b

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>>

>>> b.sum(axis=0) # sum of each column

array([12, 15, 18, 21])

>>>

>>> b.min(axis=1) # min of each row

array([0, 4, 8])

>>>

>>> b.cumsum(axis=1) # cumulative sum along each row

array([[ 0, 1, 3, 6],

[ 4, 9, 15, 22],

[ 8, 17, 27, 38]])

Numpy同时提供很多全局函数

>>> B = np.arange(3)

>>> B

array([0, 1, 2])

>>> np.exp(B)

array([ 1. , 2.71828183, 7.3890561 ])

>>> np.sqrt(B)

array([ 0. , 1. , 1.41421356])

>>> C = np.array([2., -1., 4.])

>>> np.add(B, C)

array([ 2., 0., 6.])

四.寻址,索引和遍历:

一维数组的遍历语法和python list类似:

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

>>> a

array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])

>>> a[2]

8

>>> a[2:5]

array([ 8, 27, 64])

>>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000

>>> a

array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])

>>> a[ : :-1] # reversed a

array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])

>>> for i in a:

... print(i**(1/3.))

...

nan

1.0

nan

3.0

nan

5.0

6.0

7.0

8.0

9.0

多维数组的访问通过给每一维指定一个索引,顺序是先高维再低维:

>>> def f(x,y):

... return 10*x+y

...

>>> b = np.fromfunction(f,(5,4),dtype=int)

>>> b

array([[ 0, 1, 2, 3],

[10, 11, 12, 13],

[20, 21, 22, 23],

[30, 31, 32, 33],

[40, 41, 42, 43]])

>>> b[2,3]

23

>>> b[0:5, 1] # each row in the second column of b

array([ 1, 11, 21, 31, 41])

>>> b[ : ,1] # equivalent to the previous example

array([ 1, 11, 21, 31, 41])

>>> b[1:3, : ] # each column in the second and third row of b

array([[10, 11, 12, 13],

[20, 21, 22, 23]])

When fewer indices are provided than the number of axes, the missing indices are considered complete slices:

>>>

>>> b[-1] # the last row. Equivalent to b[-1,:]

array([40, 41, 42, 43])

…符号表示将所有未指定索引的维度均赋为 : ,:在python中表示该维所有元素:

>>> c = np.array( [[[ 0, 1, 2], # a 3D array (two stacked 2D arrays)

... [ 10, 12, 13]],

... [[100,101,102],

... [110,112,113]]])

>>> c.shape

(2, 2, 3)

>>> c[1,...] # same as c[1,:,:] or c[1]

array([[100, 101, 102],

[110, 112, 113]])

>>> c[...,2] # same as c[:,:,2]

array([[ 2, 13],

[102, 113]])

遍历:

如果只想遍历整个array可以直接使用:

>>> for row in b:

... print(row)

...

[0 1 2 3]

[10 11 12 13]

[20 21 22 23]

[30 31 32 33]

[40 41 42 43]

但是如果要对每个元素进行操作,就要使用flat属性,这是一个遍历整个数组的迭代器

>>> for element in b.flat:

... print(element)

...

总结

以上所述是小编给大家介绍的Python Numpy 数组的初始化和基本操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

密码学专题 OpenSSL中SSL相关指令

再谈SSL和OpenSSL 由于SSL协议已经是密码学和PKI技术中非常具体的一个应用协议&#xff0c;为了实现它&#xff0c;OpenSSL在密码学基础应用和PKI技术的基础实现上做了大量的工作&#xff0c;才逐渐形成和奠定了OpenSSL在密码学应用和PKI技术开发中的重要基础软件包地位。Open…

python企业发放的奖金_你公司的年终奖发了吗?

没发, 被裁了. 跨境电商行业, 2017.7 入职,2018.11.19 下午接到裁员通知.. 人事找我聊了下,叫我一个星期之内走,补偿1个月工资.... 我想想有点不对劲.. 于是我百度了下,5分钟之后,提出了我的方案: 1、按照劳动法应该补偿1.5个月,并且提前1月通知 2、补偿2.5个月. 我立马走. 最后…

使用MetaMask实现转账交易时附带Input Data数据

进入如下页面&#xff0c;点击View Assert in Explorer进入Etherscan网站&#xff0c;就可以看到本账户先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod&#xff1a;交易的类型&#xff0c;一般是两种&#xff0c;如果是Transfer指定的是合约部署&#xff1b;如…

Ubuntu安装Google浏览器

下载谷歌浏览器 直接使用Ubuntu自带的火狐浏览器进行下载 默认下载到/tmp临时文件夹里面&#xff0c;考虑到权限问题&#xff0c;需要将其移动到 Downloads文件夹下面使用命令 sudo mv ./goo&#xff08;Tab&#xff09;~/Down(Tab)使用命令行的方式进行下载 wget https://dl.g…

普通类创建获取session 方式_猿蜕变11——一文搞懂mybatis花式使用方式

看过之前的蜕变系列文章&#xff0c;相信你对mybatis有了初步的认识。但是这些还不够&#xff0c;我们今天进一步来了解下mybatis的一些用法。猿蜕变同样是一个原创系列文章&#xff0c;帮助你从一个普通的小白&#xff0c;开始掌握一些行业内通用的框架技术知识以及锻炼你对系…

Ubuntu配置IPFS的环境

参考链接 Ubuntu上IPFS环境搭建 - 简书 下载安装包 下载地址&#xff1a;https://dist.ipfs.io/#go-ipfs页面会自动根据你的操作系统提供适合的下载安装包&#xff0c;所以需要在Ubuntu环境下点开上面那个链接&#xff0c;网页自动识别当前的平台并提供对应的版本&#xff0c…

composer升级_Composer-命令简介

简介Composer 是一个用于 PHP 依赖管理的工具。它实现了让你声明项目所依赖的库&#xff0c;并帮你完成安装/更新过程。以下命令来自 composer version 1.8.0。翻译使用【百度翻译】。通过在命令窗口执行&#xff1a;composer或者&#xff1a;composer list得到 composer 的全部…

Ubuntu搭建联盟链,实现节点之间数据同步

安装go环境 从参考链接选择Linux版本的go的安装包 使用命令 mv go&#xff08;Tab补全&#xff09;/usr/local 移动go安装包到/usr/local目录下使用命令解压 sudo tar -xvzf go(Tab补全) 配置环境 sudo gedit ~/.profile export PATH$PATH:/usr/local/go/bin激活生效 sou…

关于python语言的编程模式、哪个说法正确_测验1: Python基本语法元素 (第1周) 单选题+程序题...

第1章测验&#xff0c;共10道单选题和2道编程题&#xff0c;限答1次 单选题 1.Guido van Rossum正式对外发布Python版本的年份是&#xff1a; A.2002 B.1998 C.2008 D.1991 正确答案&#xff1a; D Python成功了&#xff0c;所以早年的开发历史也受到关注&#xff0c;以下是Gui…

火狐浏览器添加MetaMask钱包和本地开启私有链开发

火狐浏览器添加MetaMask钱包 因为对其配置了代理工具&#xff0c;所以直接使用谷歌引擎搜索MetaMask钱包即可第一次使用&#xff0c;立即开始设置 点击我同意&#xff0c;进行密码的创建 牢记助记词&#xff0c;助记词及其关键&#xff0c;将其存储在安全的地方 区块链-开发 M…

python赋值01_python学习笔记1-赋值与字符串 | 学步园

阅读本学习笔记需有一定语言基础&#xff0c;闲话少说&#xff0c;我们开始 一、赋值与数字 【简介】 python的赋值很简单&#xff1a; number 1 # 数值 number 2 2 # 支持加减乘除运算 number (1 2j) * (1 - 1j) # 支持复数的运算 二、字符串 【简介】 str "Hello,…

CLion导入用户自己的lib和头文件

文件的层级结构如上面所示对应的CMakeLists.txt配置文件如下面所示 cmake_minimum_required(VERSION 3.15) project(smart_shap)set(CMAKE_CXX_STANDARD 14)add_executable(${PROJECT_NAME} main.cpp )#target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}…

东芝移动硬盘驱动_传输数据不用等,高速移动硬盘数据线畅享快传体验

不管你是设计师&#xff0c;摄影师亦或是办公一族&#xff0c;几乎都能用到电脑&#xff0c;而电脑里的文件如果很多的话&#xff0c;为了安全起见都会备份一份数据&#xff0c;以免电脑储存容量过大导致电脑卡顿。另一方面&#xff0c;为了保护数据防止丢失造成不必要的麻烦&a…

使用国密浏览器和使用Wireshark进行国密抓包

使用的软件 信密浏览器 密信浏览器发布Windows正式版 - 密信技术国密Wireshark GMSSL - 国密SSL实验室支持国密算法的网站 https://www.wotrus.com/ 流程操作 打开windows终端&#xff0c;使用命令ping沃通网站&#xff0c;找到这个网站的ip地址 ping www.wotrus.com打…

django框架学习文档_Python四大主流网络编程框架,你知道么?

高并发处理框架—— TornadoTornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器。它在处理高网络流量时表现得足够强健&#xff0c;却在创建和编写时有着足够的轻量级&#xff0c;并能够被用在大量的应用和工具中。Tornado 作为 FriendFeed 网站的基础框架&#xff0c…

VS Studio报错无法解析的外部符号 _imp_XXXXXXXXX

出现字符_imp&#xff0c;说明不是真正的静态库&#xff0c;而是某个动态库的导入库&#xff0c;导入函数和自己不同名&#xff0c;所以加了字符_imp。比如说_imp_GetUserNameA就是GetUserNameA函数。会报这种错误的原因&#xff1a; 1、说明注册表函数没有相关的lib库&#xf…

hashmap put过程_阿里十年技术大咖,教你如何分析1.7中HashMap死循环

在多线程环境下&#xff0c;使用HashMap进行put操作会引起死循环&#xff0c;导致CPU利用率接近100%&#xff0c;HashMap在并发执行put操作时会引起死循环&#xff0c;是因为多线程会导致HashMap的Entry链表形成环形数据结构&#xff0c;一旦形成环形数据结构&#xff0c;Entry…

Socket代码实现服务端 和 客户端之间通信

服务端代码 // Socket_connection.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #ifndef UNICODE #define UNICODE #endif#define WIN32_LEAN_AND_MEAN#include <winsock2.h> #include <Ws2tcpip.h> #include <stdio.h> #incl…

python综合管理系统_Python-20 (信息系统-框架/循环/增删/综合应用)

# 1. 目标 这里我们通过简单案例的综合应用&#xff0c;了解框架的概念&#xff0c;感受循环、字符字典数据处理等基础点的应用场景 # 2. 框架 搭建一个人员信息管理系统的简单框架&#xff0c;初步感受框架的概念。 1> 主程序 -- cards_mian.py程序的主功能代码&…

本地搭建server和客户端使用端口进行数据通信,使用Wireshark抓取127.0.0.1环回地址并分析通信数据

本地搭建服务端和客户端 参考网址 Socket代码实现服务端 和 客户端之间通信_CHYabc123456hh的博客-CSDN博客server指定通信的端口是 5099client 使用的端口是动态变化的&#xff0c;因此在wireshark里面需要设定的抓取端口是 5099 使用wireshark开启抓包 参考链接 [tcp] Wir…