首先声明本篇博客是本人学习CS231n的学习笔记,分享给大家当作参考。原文请看本人博文
Numpy是Python中用于科学计算的核心库。它提供了高性能的多维数组对象,以及相关工具。(其中很多函数类似于matlab中的函数,如果有matlab基础建议看[NumPy_for_Matlab_Users ](http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users))
数组创建
一个numpy数组是一个由不同数值组成的网格。网格中的数据都是同一种数据类型,可以通过非负整型数的元组来访问。维度的数量被称为数组的阶,数组的大小是一个由整型数构成的元组,可以描述数组不同维度上的大小。
创建数组有5个通用机制:
1.从其他 Python 结构 (例如, 列表, 元组) 的转换
2.内部 numpy 数组函数创建对象 (例如,arange, ones, zeros, 等)
3.从磁盘读取数组, 从标准或自定义格式
4.通过使用字符串或缓冲区从原始字节创建数组
5.使用特殊的 library功能 (例如, random)
其中,最常用的是前两种方法在此进行简要介绍。
(1)从列表创建数组,然后利用方括号访问其中的元素:
“`
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> print(type(a))
<class 'num;>
>>> prin)
(3,)
>>> print(a[0],a[1],a[2])
1 2 3
>>> a[0] = 5
>>> print(a)
[5 2 3]
>>> b = np.array([[1,2,3],[4,5,6]])
>>> print(b)
[[1 2 3]
[4 5 6]]
>>> prin)
(2, 3)
>>> print(b[0,0],b[0,1],b[1,0])
1 2 4
“`
(2)内部 numpy 数组函数创建对象 (例如,arange, ones, zeros, 等)
“`
>>> import numpy as np
>>> a = np.zeros((2,2))
>>> print(a)
[[ 0. 0.]
[ 0. 0.]]
>>> b = np.ones((1,2))
>>> print(b)
[[ 1. 1.]]
>>> c = np.full((2,2),7)
>>> print(c)
[[7 7]
[7 7]]
>>> d = np.eye(2)
>>> print(d)
[[ 1. 0.]
[ 0. 1.]]
>>> e = np.random.random((2,2))
>>> print(e)
[[ 0.90679082 0.04361987]
[ 0.85688384 0.6434056 ]]
>>> f = np.arange(10) #值递增
>>> print(f)
[0 1 2 3 4 5 6 7 8 9]
>>> g = np.arange(2,10,dtype=np.float)
>>> print(g)
[ 2. 3. 4. 5. 6. 7. 8. 9.]
>>> h = np.arange(2,3,0.1)
>>> print(h)
[ 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9]
>>> i = np.linspace(1.,4.,6) #创建具有指定数目的元素的数组, 并在指定的开始值和结束数值之间平均间隔
>>> print(i)
[ 1. 1.6 2.2 2.8 3.4 4. ]
“`
更详细的数组创建方法请看[Array creation](https://docs.scipy.org/doc/numpy/user/basics.creation.html#arrays-creation)
访问数组
Numpy提供了多种访问数组的方法。
切片:和Python列表类似,numpy数组可以使用切片语法。因为数组可以是多维的,所以你必须为每个维度指定好切片。
“`
>>> import numpy as np
# Create the following rank 2 array with shape (3, 4)
# [[ 1 2 3 4]
# [ 5 6 7 8]
# [ 9 10 11 12]]
>>> a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
# Use slicing to pull out the subarray consisting of the first 2 rows
# and columns 1 and 2; b is the following array of shape (2, 2):
# [[2 3]
# [6 7]]
>>> b = a[:2,1:3]
# A slice of an array is a view into the same data, so modifying it
# will modify the original array.
>>> print(a[0,1]) # Prints "2"
2
>>> b[0,0] = 77 # b[0, 0] is the same piece of data as a[0, 1]
>>> print(a[0,1]) # Prints "77"
77
“`
你可以同时使用整型和切片语法来访问数组。但是,这样做会产生一个比原数组低阶的新数组。需要注意的是,这里和MATLAB中的情况是不同的:
“`
>>> import numpy as np
>>> a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
# Two ways of accessing the data in the middle row of the array.
# Mixing integer indexing with slices yields an array of lower rank,
# while using only slices yields an array of the same rank as the
# original array:
>>> row_r1 = a[1,:] # Rank 1 view of the second row of a
>>> row_r2 = a[1:2,:] # Rank 2 view of the second row of a
>>> print(row_r1,row_r1.shape)
[5 6 7 8] (4,)
>>> print(row_r2,row_r2.shape)
[[5 6 7 8]] (1, 4)
# We can make the same distinction when accessing columns of an array:
>>> col_r1 = a[:,1]
>>> col_r2 = a[:,1:2]
>>> print(col_r1,col_r1.shape)
[ 2 6 10] (3,)
>>> print(col_r2,col_r2.shape)
[[ 2]
[ 6]
[10]] (3, 1)
“`
整型数组访问:当我们使用切片语法访问数组时,得到的总是原数组的一个子集。整型数组访问允许我们利用其它数组的数据构建一个新的数组:
“`
>>> import numpy as np
>>> a = np.array([[1,2], [3, 4], [5, 6]])
# An example of integer array indexing.
# The returned array will have shape (3,) and
>>> print(a[[0, 1, 2], [0, 1, 0]]) #[0,0] [1,1] [2,0]
[1 4 5]
# The above example of integer array indexing is equivalent to this:
>>> prin([a[0, 0], a[1, 1], a[2, 0]]))
[1 4 5]
# When using integer array indexing, you can reuse the same
# element from the source array:
>>> print(a[[0, 0], [1, 1]]) #[0,1] [0,1]
[2 2]
# Equivalent to the previous integer array indexing example
>>> prin([a[0, 1], a[0, 1]]))
[2 2]
“`
整型数组访问语法还有个有用的技巧,可以用来选择或者更改矩阵中每行中的一个元素:
“`
>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
>>> print(a)
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
>>> b = np.array([0,2,0,1])
>>> print(a[np.arange(4),b])
[ 1 6 7 11]
>>> a[np.arange(4),b] += 10
>>> print(a)
[[11 2 3]
[ 4 5 16]
[17 8 9]
[10 21 12]]
“`
布尔型数组访问:布尔型数组访问可以让你选择数组中任意元素。通常,这种访问方式用于选取数组中满足某些条件的元素,举例如下:
“`
>>> import numpy as np
>>> a = np.array([[1,2], [3, 4], [5, 6]])
>>> bool_idx = (a > 2)# Find the elements of a that are bigger than 2;
# this returns a numpy array of Booleans of the same
# shape as a, where each slot of bool_idx tells
# whether that element of a is > 2.
>>> print(bool_idx)
[[False False]
[ True True]
[ True True]]
# We use boolean array indexing to construct a rank 1 array
# consisting of the elements of a corresponding to the True values
# of bool_idx
>>> print(a[bool_idx])
[3 4 5 6]
# We can do all of the above in a single concise statement:
>>> print(a[a > 2])
[3 4 5 6]
“`
关于数组的访问详情请查看[Indexing](https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)
1.文章《matlab中怎么定义数组,matlab定义一维数组并赋值!》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《matlab中怎么定义数组,matlab定义一维数组并赋值!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好