ndarray的一维数组的元素选取与Python列表的切片操作很相似,与列表不同的时,获取的数据组成一个新数组但与原有的数组共享一个内存存储空间,即数据更改获取得到的数据中某个元素的值,原有数组也会产生相应变化。
下面列举其种常见的选取方式
首页使用arange快速创建一个一维数组

#coding=utf-8
import numpy as np
arr1 = np.arange(10)

[0 1 2 3 4 5 6 7 8 9]

1.使用整数为下标选取数组中的某一个元素

#取第1个元素
print arr1[0] #输出 0

2.使用负数为下标反向选择数据中的某一个元素

#取第1个元素
print arr1[-1] #输出9

3.使用切片做为下标选取数据中一部分

(1) 完整的切片形式

[开始索引:结束索引:步长]
如省略开始索引,则开始索引值为0
如省略结束索引,则结束索引值为数组对应元素最大索引值
如省略步长,则步长值为1

#取索引为0(包含)到索引为2(不包含)之间的元素且步长为1(即第1个和第2个元素)
print arr1[0:2:1] #输出 [0,1]
#取索引为0(包含)到索引为10(不包含)之间的元素且步长为2(即第1、3、5、7、9个元素)
print arr1[0:10:2] #[0 2 4 6 8]

(2) 省略步长

#取索引为0(包含)到索引为2(不包含)之间的元素(即第1个和第2个元素)
print arr1[0:2] #输出 [0,1]

(3) 省略结束索引

#从索引为1的元素且步长为2选取元素
print arr1[1::2] #输出 [1 3 5 7 9]

(4) 省略结束索引和步长

#从索引为1的元素开始选取元素
print arr1[1:] #输出 [1 2 3 4 5 6 7 8 9]
print arr1[1::] #与上面效果相同,输出 [1 2 3 4 5 6 7 8 9]

(5) 省略开始索引

#选取索引为0到2之间
print arr1[:2:1] #输出 [0,1] 这个与arr1[0:2]效果相同

(5) 省略开始索引及步长

#选取索引为0到2之间
print arr1[:2:] #输出 [0,1] 这个与arr1[0:2]效果相同

(6) 省略开始索引及结束索引

#以步长为2选择数组中的元素
print arr1[::2] #输出 [0 2 4 6 8]

4.使用负数步长来翻转数组

#使用负数索引来翻转
print arr1[::-1] #输出[9 8 7 6 5 4 3 2 1 0]
print arr1[::-2] #输出[9 7 5 3 1]

备注:如果是用切片形式选择数组中的一部分元素,会形成一个新的数组(可以通过 type查看)且其与原有数组共享一个内存存储块,如果更改新生成的数组中的元素值,则原有数据对应索引位置的元素的值也会改变,如下列所示

import numpy as np
arr1 = np.arange(10)
print arr1 #输出 [0 1 2 3 4 5 6 7 8 9]
arr2= arr1[2:5]
print arr2 #输出 [2 3 4]
arr2[1]=20
print arr2 #输出 [2 20 4]
print arr1 #输出 [0 1 2 20 4 5 6 7 8 9]

5、使用整数列表选取
使用整数列表对数组进行选取操作时,会将整数列表的值做为下标来选取数组;与使用切片形式做为下标不同的是,选取得到的数组不会与原有数据共享一个内存存储块;即更改得到的新数组值不会影响原有数组

# coding=utf-8
import numpy as np
arr1 = np.arange(10)
print arr1 #输出 [0 1 2 3 4 5 6 7 8 9]
arr2=arr1[[1,1,5,6]]
print arr2 #输出 [1 1 5 6 ]
arr2[0]=-1 #更改得到的新数组值不会影响原有数组
print arr1 #输出 [0 1 2 3 4 5 6 7 8 9]
ndarray的一维数组的元素选取与Python列表的切片操作很相似,与列表不同的时,获取的数据组成一个新数组但与原有的数组共享一个内存存储空间,即数据更改获取得到的数据中某个元素的值,原有数组也会产生相应变化。
今天做 据处理时,遇到了从三维 组中批量加入二维 组的需求。其中三维 组在深度 学习 的特征 据处理时经常会使用到,所以读者有必要对该小知识点做到清楚了解并掌握。现对三维 组中的元素位置结合代码做详细归纳总结,方便日后查阅和为网友答疑! 图示效果图: 直接贴代码: def test3D(): import numpy as np data_array = np.zeros((3, 5, 6), dtype=np.int) data_array[1, 2, 2] = 1 print(data_array) 介绍:通过np.zeros创建一个3行5列6个通道的三维 组,并给第二个通道的第一
https://edu.csdn.net/course/detail/36074 Python 实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-detail/142 print("---------------书写格式2------------------------") # dtype="U75" :表示以字符串类型导入(75是导入的字符个 为75) # skip_header=1 :表示从txt的第1行导入,即表头(第0行)不导入 world_alcohol = numpy .genfromtxt("world_...
0. 问题描述 每次使用 Numpy ,遇到需要从(A,B,C)三维 组中提取(A,B)、(A,C)或者(B,C)或者(A,)这几个维度 据时,总是忘记该如何切片,网上搜到的又太详细,这 做个笔记方便自己下次使用时查找。 举个例子,如果我现在有一个 X =(10,20,30)的三维 组: 那么X = [ 0:9,0:19,0:29 ] / X = [ :,:,: ] (两种写法效果一样),都是 取出 X的全部 据,基于此,接下来就好切片了 1. (A,B,C)——> (A,B) X_New = X[ :,:,
当使用布尔 组b作为下标存取 组x中的元素时,将收集 组x中所有在 组b中对应下标为True的元素。使用布尔 组作为下标获得的 组不和原始 组共享 据空间,注意这种方式只对应于布尔 组(array),不能使用布尔列表(list)。 参考自:这 >>> x = np.arange(5,0,-1) array([5, 4, 3, 2, 1]) >>> x[np.array([True
昨天在搭建感知机模型的时候,遇到了 一维 矩阵中 据提取不出来的情况,所以今天复习一下 一维 矩阵中 据的提取。 numpy 一维 组分为1xN和Nx1两种情况,这两种情况对于 据的提取方法是不同的。 1xN的 组中 据的提取需要使用二维来提取,也就是需要使用两个[][],[0]提 取出 来的是一行的 据。 Nx1的 据提取用一个[]就可以 matrix矩阵 在 numpy 中,使用np.matrix()可以将 numpy 据转换为矩阵,mat()的具体操作方法可以参考这篇博客 numpy 之pyt
[code=plain] CREATE USER 'YOUR_NEW_USER'@'%' ALTER USER 'YOUR_NEW_USER' identified by 'YOUR_PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO 'YOUR_NEW_USER'@'%'; [/code] 《如何远程连接 MySQL 数据库,阿里云腾讯云外网连接教程》 https://kalacloud.com/blog/how-to-allow-remote-access-to-mysql/ 我是在这篇教程里看到的,写的非常详细,所有远程连接碰到的坑,这里都写到了,跟着教程走即可,推荐一下。 再顺手补充一个 MySQL 8.0 的新特性细节,MySQL 8.0 默认认证方式改为 SHA2 了,需要把这个认证方式改为密码认证。 [code=plain] ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; [/code] 这一点卡住好多人。 mysql 赋给用户远程权限 grant all privileges on RAIN_LOST: 一直报这个错,语法也没问题啊 mysql 赋给用户远程权限 grant all privileges on RAIN_LOST: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'root' WITH GRANT OPTION' at line 1 mysql 赋给用户远程权限 grant all privileges on hotel2016: 写得不错,点赞 ubuntu设置永久dns Master of Linux: