python小白之数组索引

索引

numpy中的数组索引形式和Python是一致的。如:

np.arange(10)

print x[2]  #单个元素,从前往后正向索引。注意下标是从0开始的。

print x[-2]  #从后往前索引。最后一个元素的下标是-1

print x[2:5]  #多个元素,左闭右开,默认步长值是1

print x[:-7]  #多个元素,从后向前,制定了结束的位置,使用默认步长值

print x[1:7:2]  #指定步长值

x.shape=(2,5)  #x的shape属性被重新赋值,要求就是元素个数不变。2*5=10

print x[1,3]  #二维数组索引单个元素,第2行第4列的那个元素

print x[0]  #第一行所有的元素

y=np.arange(35).reshape(5,7)  #reshape()函数用于改变数组的维度

print y[1:5:2,::2]  #选择二维数组中的某些符合条件的元素


#python学习之数组 2018.4.17
# -*- coding: UTF-8 -*-

from numpy import *
import math
A =arange(15).reshape(3,5)#reshape参数开头可以再加一个数字,表示reshape后生成的个数

print(A.sum(axis=0))#A列合计
print(A.min(axis=1))#A行最小值 
print(A.cumsum(axis=1))#A中每行的累计和
print(A.shape)#A的形状 几行几列
print(A.ndim)#A的秩 即数组轴的个数
print(A.dtype.name)#查看array里面数据类型
print(A.itemsize)#数组中每个元素的字节大小int32/8=4
print(A.size)#数据元素个数
print(type(A))#A的类型为numpy.ndarray
# C=array([(1.5,2,3),(4,5,6)])#可以使用但是1.5,2,3等数字无法改变了C,所以不适用
# C=array([1.5,2,3],[4,5,6])#错误
C=array([[1.5,2,3],[4,5,6]],dtype=complex)#正确,并指定数组类型
print (C)

# print (zeros((3,4)))#一个三行四列都是0的数组
# print (ones((2,3,4),dtype=int16))#两个三行四列都是1的数组
print (empty((3,4)))#内容随机依赖内存状态的数组,默认都是float64

# set_printoptions(threshold=‘nan‘)#表示强制打印整个数组,中间部分不会省略
D=array([1,2,3,4],dtype=int)
print(D**2)
print(D<2)

E=array([[1,1],[0,1]])
F=array([[2,0],[3,4]])
print(E*F)#矩阵对应位置相乘
print(dot(E,F))#矩阵乘法
print(linspace(0,pi,3,endpoint=False,retstep=True))#从0到pi之间均分,产生3个数,不包括末尾,返回数及间隔大小

#一维数组可以被索引、切片迭代
G=arange(10)**3
print(G[2:5])#输出2的3次方、3的3次方、4的三次方
G[:6:2]=-5#相当于G[0:6:2],是指从第0到6个数,变为-5,步长为2,即第一个=-5,第三个等于-5
print(G[::-1])#倒序输出

def f(x,y):
    return 10*x+y
H=fromfunction(f,(5,4))#多维数组每个轴可以有索引
print(H[0:4,1])#第一行到第四行的第二列的数值输出
print(H[:,1])#第二列全部的数值输出
print(H[1:3,])#第二行到第三行的数值输出
print(H[-1])#相当于H[-1,:]
#点(…)代表许多产生一个完整的索引元组必要的分号。如果x是秩为5的数组(即它有5个轴),那么:
# x[1,2,…] 等同于 x[1,2,:,:,:],
#x[…,3] 等同于 x[:,:,:,:,3]
#x[4,…,5,:] 等同 x[4,:,:,5,:].
# for element in H.flat:#flag是数组的一个属性,可以用来对数组中元素运算
    # print (element)
#向下取整floor()
print(H.ravel())#将数组全展平


#复制与视图
#1.完全不拷贝 简单的赋值不拷贝数组对象或它们的数据。
a=arange(12)
b=a
print(b is a)

b.shape = 3,4
#2.视图和浅复制 不同的数组对象分享同一个数据 c的形状不会变化但数值会
c=a.view()
print(c is a)

print(c.base is a) 

c.shape = 2,6
print(a.shape)
c[0,4]=12345
print(a)

#3.深复制 完全复制数组和它的数据 即两个数组完全独立开
d=a.copy()
print(d is a)
print(d.base is a)
d[0,0]=-1
print(a)

#-----------------------------------------------------------------
#numpy函数方法归类
#1.创建数组 arange array copy empty empty_like eye fromfile fromfunction identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r , zeros, zeros_like
#2.转化astype, atleast 1d, atleast 2d, atleast 3d, mat
#3.操作array split, column stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack
#4.询问all, any, nonzero, where
#5.排序argmax, argmin, argsort, max, min, ptp, searchsorted, sort
#6.运算choose, compress, cumprod, cumsum, inner, fill, imag, prod, put, putmask, real, sum
#7.基本统计cov, mean, std, var
#8.基本线性代数cross, dot, outer, svd, vdot
#---------------------------------------------------------------
#numpyj进阶
#花哨的索引NumPy比普通Python序列提供更多的索引功能。数组可以被整数数组和布尔数组索引。
k=arange(12)**2
i=array([1,1,3,8,5])
print(k[i])

#线性代数
#a=array([[2,3],[3,4]])
#inv(a)求逆 trace(a)求迹 a.transpose()转置
# solve(A,b) 求解AX=b
# eigvals 求解特征值
# eig(C) 返回的c1是特征值 c2是特征向量
# U,sigma,V=np.linalg.svd(D,full_matric=false) svd奇异值分解
# pinv 广义逆
# det行列式

#矩阵类
#Amatrix(‘1.0 2.0;3.0 4.0‘)
#A.T
L = arange(12)
L.shape=3,4
print(L[:,[1,3]])

print(L[:,L[0,:]>1])#保留第一行大于1的列

print(L[L[:,0]>2,L[0,:]>1])#在矩阵两个方向有条件的切片

#技巧
L.shape=2,-1,3 #-1表示省略一个尺寸 将会自动推导 12个数 不知道要输出几行,但要输出3列 同时要输出两个
print(L)

 

建立数组

tip: 可以采用的形式from numpy import *+array~

 import numpy as np+np.array


#常见错误 错误要点:array应该提供一个由数值组成的列表作为参数而不是用多个数值参数调用

# B=[[6,7],[8]] #这是list,而我们需要使用array
# B=array(6,7,8)  #错
# B=array[6,7,8] # 错
# B=array[[6,7,8]] #错B=array([6,7,8]) #对

原文地址:https://www.cnblogs.com/hyacinthwyd/p/8986389.html

时间: 2024-08-29 06:47:45

python小白之数组索引的相关文章

python小白-day6 time&datetime模块

time&datetime ?一.time模块 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的       第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同 1 2 3 4 5 6 7 8 9 10 11 12 import time print('clock():',time.cl

python numpy基础 数组和矢量计算

在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率, 类似于R的向量化操作,是的数据的操作趋于简单化,在python 中是使用numpy模块可以进行数组和矢量计算. 下面来看下简单的例子 import numpy as np data=np.array([2,5,6,8,3]) #构造一个简单的数组 print(data) 结果: [2 5 6 8 3] data1=np.array([[2,5,6,8,3],np.arange(5)])  #构建一个二维数组 print(d

Python小白-day10 memcache&redis

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Python操作Memcached 1.第一次操作 import memcache   mc = memcache.Clie

动态数组索引越界问题

1.在C++中,可以采用几种不同的方法创建一个某种类型T的对象的数组.3种常用的方法如下: #define N 10 //数组的长度N在编译时已知 T static_array[10]; int n = 20; //数组的长度n是在运行时计算的 T* dynamic_array = new T[n]; std::vector<T> vector_array; //数组的长度可以在运行时进行修改 当然,我们仍然可以使用calloc()和malloc()函数,并且这样的程序仍然能够通过编译并顺利运

python学习日记-数组和if判断

python中的数组也叫list,还有一个叫tuple.list还是常规的的用法,比如创建一个数组并向里面写入内容如下: arrList=["tom","jerry","dog"] 值得注意的是数组的括号为中括号“[”,而不是大括号,和c#不一样,被坑了一小下.并且对于数组list,他对内容的要求1非常灵活比如里面可以包含字符,字符串,整形,浮点数,甚至是另一个数组,比如arrList=["a",1.2,["b&qu

Numpy数组索引为-1和None

numpy的数组操作方便,可以用:来切片,用布尔数组或者布尔表达式来查找符合条件的数据,也可以用数组作为另一个数组的索引来查找指定的数据.但有时也会见到数组索引为-1和None.两者的用法如下: 1.-1指定维度上的最后一个.例如shape为(3,3)的数组data,data[2,-1]等同于data[2,2]:data[-1]相当于data[2]:data[1,1:-1]等同于data[1,1:2] 2.None并不指代数组中的某一维,None用于改变数组的维度.例如data的shape为(3

python如何将数组分成几个区间,取每个区间的最大值存到另一个数组里

python如何将数组分成几个区间,取每个区间的最大值存到另一个数组里 贴吧上有人问python 问题:有一段数组,把它分成几个区间,取每个区间的最大值存到另一个数组里 比如数组a[1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,0] 看看python培训黄哥所写的2个方法. 第一种方法: # coding:utf-8"""黄哥python远程视频培训班https://github.com/pythonpeixun/article/blob/master/

Python小白__网络层级

Python小白__网络分析 刚刚开始接触Python,为了怕遗忘,所以写个博文方便自己回顾,也可以和大家分享,有不同意见,大家共同探讨学习. 网络层级 第一篇是对于网络的一些看法和感想,不只是Python 众做周知,在现在的网络时代,最重要的就是网络通信,通信的方式有甚多 ,有Http,TCP,UDP等等,其不同程序语言实现方式也很多,但是底层的通信原理都相差不多.所以就有了一个网络通信的网络层级之分. 一般网络层级分为四层,分别为:应用层,传输层,网络层,链路层. 假如现在A要传递一条数据给

联合分组、子查询、视图、事务、python操作mysql、索引

目录 联合分组.子查询.视图.事务.python操作mysql.索引 一.联合分组 二.子查询 三.all 与any:区间修饰条件 四.视图:view 视图的增删改 五.事务 5.1.事务的概念 5.2.事务的四大特性 六.pymysql 模块:python操作mysql 6.1 安装pymysql 模块 6.2 python用pymysql 操作mysql步骤 6.3 游标操作 6.4 pymysql事务 6.5 sql注入 七.索引 联合分组.子查询.视图.事务.python操作mysql.