问题:

  为什么第一次输出矩阵形式的数据,第二次输出list形式的数据?

详见代码:

a = np.array([[1, 2], [3, 4]])
print(a)
print('ndim :', a.ndim)

控制台输出:

[[1 2]
[3 4]]
ndim : 2

然而,代码修改一下:

b = np.array([[11, 12], [14, 16, 17]])
print(b)
print(type(b))

控制台输出:

[list([11, 12]) list([14, 16, 17])]
<class 'numpy.ndarray'>

答案:

  第二次输出元素 [ [11, 12], [14, 16, 17] ] 在形式上不能用矩阵形式输出,不对称。


问题:

array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
order : {'K', 'A', 'C', 'F'}, optional
Specify the memory layout of the array. order参数用于:指定数组的内存布局。

  order的作用体现在哪里?

  怎么才能看出数组的内存布局?

答案:

  ndarray.flags属性, 查看ndarray对象的内存信息

  C_CONTIGUOUS : True        c_contiguous(连续的)
F_CONTIGUOUS : False        f_contiguous
OWNDATA : True           own data
WRITEABLE : True          writeable
ALIGNED : True           aligned(对齐)
WRITEBACKIFCOPY : False     write back if copy
UPDATEIFCOPY : False       update if copy

sin():

Parameters
----------
x : array_like
Angle, in radians (:math:`2 \pi` rad equals 360 degrees).

2 \pi = 2π

360°等于2π弧度
在数学和物理中,弧度是角的量度单位.它是由国际单位制导出的单位,单位缩写是rad.(radians)

弧度定义:弧长等于圆半径的弧所对的圆心角为1弧度

根据定义,一周的弧度数为2πr/r=2π, 360°角=2π弧度,因此,1弧度约为57.3°,即57°17'44.806'',1°为π/180弧度,近似值为0.01745弧度,周角为2π弧度, 平角(即180°角)为π弧度, 直角为π/2弧度.
在具体计算中,角度以弧度给出时,通常不写弧度单位,直接写值.最典型的例子是三角函数,如sin 8π、tan (3π/2).
弧长公式:
l rad=nπr/180
在这里,n就是角度数.


np.repeat()使用技巧

c = np.array([[1, 2, 3]])
c = c.reshape(-1, 3).repeat(2, 0)
输出c:
[[1, 2, 3],
[1, 2, 3]]
=====================
cc = c.reshape(-1, 3)
# -1代表不管行数,只是确定列数为3 # repeat用法
d = c.reshape(-1, 3)
d.repeat(2, 0) 可以
d.repeat(preats=2, axis=0) 可以
np.repeat(d, 2, 0) 也可以

问题:

  同样是order排序,传入'C','F'不同,则打印不同?

代码:

import numpy as np
a = np.arange(0, 60, 5).reshape((3, 4))
print(a)
for x in np.nditer(a,flags=['external_loop'], order='C'):
print(x, end=', ')

控制台输出:

[[ 0  5 10 15]
[20 25 30 35]
[40 45 50 55]]
[ 0 5 10 15 20 25 30 35 40 45 50 55],

然而,代码:

import numpy as np
a = np.arange(0, 60, 5).reshape((3, 4))
print(a)
for x in np.nditer(a,flags=['external_loop'], order='F'):
print(x, end=', ')

控制台输出:

[[ 0  5 10 15]
[20 25 30 35]
[40 45 50 55]]
[ 0 20 40], [ 5 25 45], [10 30 50], [15 35 55],

答案:

  迭代器遍历对应于每列,并组合为一维数组。(默认)


问题:

  a.T在nditer中迭代不应该输出

[[0 3]
[1 4]
[2 5]]

  吗?

代码:

a = np.arange(6).reshape(2, 3)
print(a)
print(a.T)
print(a.T.flags)
for x in np.nditer(a.T):
print(x, end=', ')
print('\n')

控制台输出:

[[0 1 2]
[3 4 5]] [[0 3]
[1 4]
[2 5]] C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False 0, 1, 2, 3, 4, 5,

答案:

  np.nditer(..., order='K') :

    order参数默认‘K’

  源码中,as close sth. as possible : 尽可能靠近

'K' means as close to the order the array elements appear in memory as possible.

  翻译:'K' 意味着,(顺序要)尽可能靠近内存中出现的的数组的元素顺序。   


=============================================

NumPy的思考……的更多相关文章

  1. numpy库:常用基本

    numpy 本文主要列出numpy模块常用方法 大部分内容来源于网络,而后经过自己的一点思考和总结,如果有侵权,请联系我 我是一名初学者,有哪些地方有错误请留言,我会及时更改的 创建矩阵(采用ndar ...

  2. numpy.trace对于三维以上array的解析

    numpy.trace是求shape的对角线上的元素的和,具体看 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.t ...

  3. [转]numpy 100道练习题

    100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...

  4. Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays

    原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...

  5. 【CV知识学习】神经网络梯度与归一化问题总结+highway network、ResNet的思考

    这是一篇水货写的笔记,希望路过的大牛可以指出其中的错误,带蒟蒻飞啊~ 一.    梯度消失/梯度爆炸的问题 首先来说说梯度消失问题产生的原因吧,虽然是已经被各大牛说烂的东西.不如先看一个简单的网络结构 ...

  6. NNs(Neural Networks,神经网络)和Polynomial Regression(多项式回归)等价性之思考,以及深度模型可解释性原理研究与案例

    1. Main Point 0x1:行文框架 第二章:我们会分别介绍NNs神经网络和PR多项式回归各自的定义和应用场景. 第三章:讨论NNs和PR在数学公式上的等价性,NNs和PR是两个等价的理论方法 ...

  7. NN入门,手把手教你用Numpy手撕NN(2)

    这是一篇包含较少数学推导的NN入门文章 上篇文章中简单介绍了如何手撕一个NN,但其中仍有可以改进的地方,将在这篇文章中进行完善. 误差反向传播 之前的NN计算梯度是利用数值微分法,虽容易实现,但是计算 ...

  8. 使用NumPy、Numba的简单使用(二)

    本来要写NLP第三课动态规划的,日了,写到一半发现自己也不会了,理论很简单,动态规划咋回事也知道,但是实现在源码上还是有点难度,现在简单给予题目描述,小伙伴也可以来思考一下,例题一,我们现在有1元硬币 ...

  9. 从时序异常检测(Time series anomaly detection algorithm)算法原理讨论到时序异常检测应用的思考

    1. 主要观点总结 0x1:什么场景下应用时序算法有效 历史数据可以被用来预测未来数据,对于一些周期性或者趋势性较强的时间序列领域问题,时序分解和时序预测算法可以发挥较好的作用,例如: 四季与天气的关 ...

随机推荐

  1. python 10道面试陷阱题目

  2. 转载:ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 解决方案

    ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 解决方案   简单描述一下场景,总共两台应用服务器,每台安装3个tomcat进行集群,并通过nginx做了负载均衡,今天在生 ...

  3. PMP备考资料和备考经验分享(基于PMP第六版)

    之前有不少小伙伴私信我说,你PMP考过了,有没有报班呢,有没有自己看的资料,有没有一些经验分享,今天在这里,就统一给大家分享一下,以便大家备考和学习PMP. 先说我自己的情况,我本身是从事项目管理的, ...

  4. openCV 3.0 Ubuntu下编译问题

    1.有个ipptv啥的东西下布下来,去官网下载放到相应目录 2.把编译器降级到5版本才能编译

  5. 【Sql Server】SQL SERVER 收缩日志

    事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息. 收缩日志的原因有很多种,有些是考虑空间不足,有些则是应用程序限制导致的. 下面介绍的是在简单模式下,进行收缩操 ...

  6. java io系列17之 System.out.println("hello world")原理

    我们初学java的第一个程序是"hello world" public class HelloWorld { public static void main(String[] ar ...

  7. solr的域

    solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段. solr中内 ...

  8. SSH框架之hibernate《三》

    Hibernate03     一.多表设计         1.1多表设计的总则             问题:我们为什么要学习多表映射?             答:                ...

  9. Unity3D 热更新方案总结

    如何评价腾讯在Unity下的xLua(开源)热更方案? Unity 游戏用XLua的HotFix实现热更原理揭秘 腾讯开源手游热更新方案,Unity3D下的Lua编程 [Unity]基于IL代码注入的 ...

  10. C++实现递归版二分搜索算法

    无聊撸了一个,没啥技术含量,别吐槽.. #include <iostream> using namespace std; int BinarySearch(int* nums,int ke ...