练习篇(Part 5)

51. Create a structured array representing a position (x,y) and a color (r,g,b) (★★☆)

 arr = np.zeros(10,[('position',[('x',float,1),('y',float,1)]),
('color',[('r',float,1),('g',float,1),('b',float,1)])])
print(arr)

运行结果:

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

52. Consider a random vector with shape (100,2) representing coordinates, find point by point distances (★★☆)

 arr = np.random.randint(1,4,(100,2))
x,y = np.atleast_2d(arr[:,0],arr[:,1])
print(arr)
dist = np.sqrt((x-x.T)**2+(y-y.T)**2)
print(dist)

运行结果:(太长)略

53. How to convert a float (32 bits) array into an integer (32 bits) in place?

 arr = np.arange(10,dtype = np.float)
arr = arr.astype(np.int32)
print(arr)

运行结果:[0 1 2 3 4 5 6 7 8 9]

54. How to read the following file? (★★☆)

1,2,3,4,5
6, , ,7,8
, ,9,10,11

 from io import StringIO
s = StringIO("""1, 2, 3, 4, 5\n
6, , , 7, 8\n
, , 9,10,11\n""")
arr = np.genfromtxt(s,delimiter=",",dtype=np.int)
print(arr)

运行结果:

[[ 1 2 3 4 5]
[ 6 -1 -1 7 8]
[-1 -1 9 10 11]]

55. What is the equivalent of enumerate for numpy arrays? (★★☆)

 arr = np.arange(9).reshape(3,3)
for index, value in np.ndenumerate(arr):
print(index, value)
for index in np.ndindex(arr.shape):
print(index, arr[index])

运行结果:

(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 3
(1, 1) 4
(1, 2) 5
(2, 0) 6
(2, 1) 7
(2, 2) 8
(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 3
(1, 1) 4
(1, 2) 5
(2, 0) 6
(2, 1) 7
(2, 2) 8

56. Generate a generic 2D Gaussian-like array (★★☆)

 x,y = np.meshgrid(np.linspace(-1,1,10),np.linspace(-1,1,10))
d = np.sqrt(x*x+y*y)
sigma,mu = 1.0,0.0
g = np.exp(-(d-mu)**2/(2.0*sigma**2))
print(g)

运行结果:(太长)略

57. How to randomly place p elements in a 2D array? (★★☆)

 arr = np.zeros((10,10))
np.put(arr,np.random.choice(range(10*10),3,replace=False),25)
print(arr)

运行结果:

[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 25. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 25. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 25. 0. 0. 0. 0. 0. 0. 0. 0.]]

58. Subtract the mean of each row of a matrix (★★☆)

 arr = np.random.randint(1,5,(5,5))
arr2 = arr - arr.mean(axis=1,keepdims=True)
print(arr)
print(arr2)

运行结果:

[[3 1 4 2 2]
[1 1 1 4 4]
[1 3 2 4 2]
[4 4 1 4 3]
[3 1 3 2 1]]
[[ 0.6 -1.4 1.6 -0.4 -0.4]
[-1.2 -1.2 -1.2 1.8 1.8]
[-1.4 0.6 -0.4 1.6 -0.4]
[ 0.8 0.8 -2.2 0.8 -0.2]
[ 1. -1. 1. 0. -1. ]]

59. How to sort an array by the nth column? (★★☆)

 arr = np.random.randint(1,10,(3,3))
print(arr)
arr = arr[arr[:,0].argsort()]
print(arr)

运行结果:

[[3 6 4]
[8 6 1]
[9 1 9]]
[[3 6 4]
[8 6 1]
[9 1 9]]

60. How to tell if a given 2D array has null columns? (★★☆)

 arr = np.random.randint(0,6,(3,3))
print(arr)
print((~arr.any(axis=1)).any())

运行结果:

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

61. Find the nearest value from a given value in an array (★★☆)

 arr = np.random.uniform(0,1,10)
print(arr)
x= 0.5
print(arr.flat[np.abs(arr - x).argmin()])

运行结果:

[0.90305224 0.48639632 0.27508478 0.54555147 0.71661301 0.21709767
0.03780985 0.90465381 0.22589984 0.42418026]
0.4863963171374911

62. Considering two arrays with shape (1,3) and (3,1), how to compute their sum using an iterator? (★★☆)

 arr1 = np.arange(3).reshape(3,1)
arr2 = np.arange(3).reshape(1,3)
it = np.nditer([arr1,arr2,None])
for x,y,z in it:
z[...] = x + y
print(it.operands[2])

运行结果:

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

63. Create an array class that has a name attribute (★★☆)

 class NamedArray(np.ndarray):
def __new__(cls, array, name="no name"):
obj = np.asarray(array).view(cls)
obj.name = name
return obj
def __array_finalize__(self,obj):
if obj is None:
return
self.info = getattr(obj,'name','no name') arr = NamedArray(np.arange(10),"range_10")
print(arr.name)

运行结果:range_10

64. Consider a given vector, how to add 1 to each element indexed by a second vector (be careful with repeated indices)? (★★★)

 arr1 = np.ones(10)
arr2 = np.random.randint(1,10,20)
np.add.at(arr1,arr2,1)
print(arr2)
print(arr1)

运行结果:

[5 8 2 2 5 4 4 4 7 1 3 8 5 4 9 3 7 3 1 3]
[1. 3. 3. 5. 5. 4. 1. 3. 3. 2.]

65. How to accumulate elements of a vector (X) to an array (F) based on an index list (I)? (★★★)

 arr1 = np.ones(10)
arr2 = np.random.randint(1,10,10)
print(arr2)
print(np.bincount(arr2,arr1))

运行结果:

[7 4 4 2 6 9 3 1 1 7]
[0. 2. 1. 1. 2. 0. 1. 2. 0. 1.]

numpy学习(五)的更多相关文章

  1. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  2. Numpy学习笔记(下篇)

    目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...

  3. numpy学习总结

    Contents Numpy是一个用python实现的科学计算包,主要提供矩阵运算的功能,而矩阵运算在机器学习领域应用非常广泛,Numpy一般与Scrapy.matplotlib一起使用. Numpy ...

  4. TweenMax动画库学习(五)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  5. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  6. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  7. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  8. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  9. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

随机推荐

  1. JVM垃圾回收——GC

    一.JVM内存分配与回收 下图为堆内存结构图(注意:元数据区(MetaData )实际上不属于堆): 1.对象优先在Eden区分配 大多数情况下,对象在新生代中Eden区分配.当Eden区没有足够空间 ...

  2. java 入门如何设计类

    2019/12/24   |    在校大二上学期    |    太原科技大学 初学java后,我们会发现java难点不在于Java语法难学,而是把我们挂在了如何设计类的“吊绳”上了.这恰恰也是小白 ...

  3. macOS Catalina 10.15版本下anaconda安装后navigator无法正常打开的解决方法

    我最近用闲置的money购置了一个ipad,想利用ipad作为mac的复屏,但是这需要将macos升级到catalina才能支持这个功能,但是catalina的更新会导致很多软件都发生无法启动或一些奇 ...

  4. Leetcode字典树-720:词典中最长的单词

    第一次做leetcode的题目,虽然做的是水题,但是菜鸟太菜,刚刚入门,这里记录一些基本的知识点.大佬看见请直接路过. https://leetcode-cn.com/problems/longest ...

  5. Git 学习文档

    Study Document for Git Git 基础 Git 文件的三种状态: 已提交(committed).已修改(modified)和已暂存(staged). Git 工作目录的状态: 已跟 ...

  6. 基于Jupyter Notebooks的C# .NET Interactive安装与使用

    .NET Interactive发布预览版了,可以像Python那样用jupyter notebooks来编辑C#代码.具体可以在GitHub上查看dotnet/interactive项目. 安装步骤 ...

  7. Python 中使用 Pillow 处理图片增加水印

    这个是个比较常见的需求,比如你在某个网站上发布了图片,在图片上就会出现带你昵称的水印.那么在Python中应该如何处理这一类需求呢? 其实在我的<Django实战开发>视频教程中有讲到这一 ...

  8. AD常用命令以及概念

    活动目录服务器常用命令合集如下: net accounts  查看第一台域控的计算机角色net accounts   查看计算机角色net share      查看共享netdom query fs ...

  9. opencv —— threshold、adaptiveThreshold 固定阈值 & 自适应阈值 进行图像二值化处理

    阈值化 在对图像进行处理操作的过程中,我们常常需要对图像中的像素做出取舍与决策,直接剔除一些低于或高于一定值的像素. 阈值分割可以视为最简单的图像分割方法.比如基于图像中物体与背景之间的灰度差异,可以 ...

  10. java提取字符串数字,Java获取字符串中的数字

    ================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ 具体的方法如 ...