-
2021-01-13 02:35:45
前言
在编程的大多数情况下我们的需求都是将数组扁平化进行降维,但是确实有那么些情况是要我们将数组进行在分类,从而要升维的。比如,我们获取了联系人数据,但是我们需要将联系人按照字母进行分组。针对联系人的例子,我们来实地演习下如何升维数组。
例子
比如我们有如下数据,我们需要将下列数组中以id中的首字母进行分类
[
{"fristCap":"A","id":"Anni","contact":"112123","value":"111"},
{"fristCap":"A","id":"Aidai","contact":"22222","value":"11111"},
{"fristCap":"B","id":"Bobo","contact":"22222","value":"25462"},
{"fristCap":"B","id":"Big","contact":"2222221","value":"23131"},
{"fristCap":"C","id":"Ca","contact":"322222","value":"2315432"},
]
也就是转换成下面这个样子:
[
{
'"firstCap":"A"
"data": [
{"fristCap":"A","id": "Anni", "contact": "112123", "value": "111"},
{ "fristCap":"A","id": "Aidai", "contact": "22222", "value": "11111"}
]
},
{
"firstCap": "B",
"data": [
{"fristCap":"B", "id": "Bobo", "contact": "22222", "value": "25462" },
{ "fristCap":"B","id": "Big", "contact": "2222221", "value": "23131"},
]
},
{
"firstCap": "C",
"data": [
{"fristCap":"C","id": "Ca", "contact": "322222", "value": "333333" }
]
}
]
做法
观察上面需要转换的数据格式,我们的思路是这样子的,
1、创建一个新的数组,用来返回归类好的数据;
2,创建一个对象,用来标记首字母,该对象要有一个标记首字母的字段firstCap,还要有一个data字段用来接纳相同首字母的数据。
3,将新建的数组用字母升序的方式重新排列
let tempArray = [];//创建一个新数组
let hash = {};
for (let contact of this.contacts) {
if(!hash[contact.firstCap]) {
tempArray.push({firstCap:contact.firstCap,data:[contact]});
hash[contact.firstCap] = contact;
} else {
for(let newContact of tempArray) {
if (newContact.firstCap === contact.firstCap) {
newContact.data.push(contact);
break;
}
}
}
}
更多相关内容 -
Matlab 使用squeeze函数提取多维矩阵的某一维
2021-04-18 05:35:44在图像处理领域,经常需要对每个像素提取特征,保存为一个三维矩阵。例如对大小为100*150的图像提取SIFT特征,就会得到100*150*128的三维矩阵(A)。如果想要索引任意一个像素(如坐标(2,3)的对应像素)的特征向量,直接...在图像处理领域,经常需要对每个像素提取特征,保存为一个三维矩阵。例如对大小为100*150的图像提取SIFT特征,就会得到100*150*128的三维矩阵(A)。如果想要索引任意一个像素(如坐标(2,3)的对应像素)的特征向量,直接对A索引A(2,3:)得到的是一个1*1*128的三维矩阵b,而不是一个向量,解决方法是使用squeeze函数。c=squeeze(b)得到的c就是128的列向量。例子如下:
1、随机生成一个三维矩阵a:
>> a=rand(2,3,4)
a(:,:,1) =
0.7655 0.1869 0.4456
0.7952 0.4898 0.6463
a(:,:,2) =
0.7094 0.2760 0.6551
0.7547 0.6797 0.1626
a(:,:,3) =
0.1190 0.9597 0.5853
0.4984 0.3404 0.2238
a(:,:,4) =
0.7513 0.5060 0.8909
0.2551 0.6991 0.9593
2、直接索引坐标(1,1)会得到
>> b=a(1,1,:)
b(:,:,1) =
0.7655
b(:,:,2) =
0.7094
b(:,:,3) =
0.1190
b(:,:,4) =
0.7513
3、使用squeeze函数:
>> c=squeeze(b)
c =
0.7655
0.7094
0.1190
0.7513
可以从每个变量的size上看出:
-
python numpy 一维数组转变为多维数组的实例
2021-03-17 14:45:18python numpy 一维数组转变为多维数组的实例如下所示:import numpynew_list = [i for i in range(9)]numpy.array(new_list).reshape(3,3)借助numpy库;以上这篇python numpy 一维数组转变为多维数组的实例就是小编...python numpy 一维数组转变为多维数组的实例
如下所示:
import numpy
new_list = [i for i in range(9)]
numpy.array(new_list).reshape(3,3)
借助numpy库;
以上这篇python numpy 一维数组转变为多维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
时间: 2018-07-01
引子 Matlab中有一个函数叫做find,可以很方便地寻找数组内特定元素的下标,即:Find indices and values of nonzero elements. 这个函数非常有用.比如,我们想计算图1中点Q(x0, y0)抛物线的最短距离.一个可以实施的方法是:计算出抛物线上所有点到Q点的距离,找到最小值,用find函数找到最小值对应的下标,即M点横坐标和纵坐标对应的元素的下标,M点到Q点的距离就是最短距离. 首先给出Matlab使用find函数实现的代码: a = linspac
python保存numpy数据: numpy.savetxt("result.txt", numpy_data); 保存list数据: file=open('data.txt','w') file.write(str(list_data)); file.close() 以上这篇Python打开文件,将list.numpy数组内容写入txt文件中的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
本文实例讲述了Python使用numpy模块创建数组操作.分享给大家供大家参考,具体如下: 创建数组 创建ndarray 创建数组最简单的方法就是使用array函数.它接收一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组. array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3, 4]) ndarray2 = np.array(list('abcdefg')) ndarray3 = np.array([
在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where,其又是list没有的 首先我们可以得到array在全局和每行每列的最大值(最小值同理) >>> a = np.arange(9).reshape((3,3)) >>> a array([[0, 1, 2], [9, 4, 5], [6, 7, 8]]) >>&
如下所示: new_array = np.zeros((5,4)) for i in range(3): new_array[i] = np.array([0.25]*4) 运行结果: >>> new_array array([[0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ]]) 以上这篇Pytho
直接分析,如原矩阵如下(1): (1) 我们要截取的矩阵(取其一三行,和三四列数据构成矩阵)为如下(2): (2) 错误分析: 取 C 的1 3行,3 4 列,定义 Z = [0,2] #定义行数 d = [2,3] #定义列数 #代码 C_zd = C[z,d] 则结果为: 由结果分析取的是第一行第三列和第三行第四列的数据,并非我们想要的结果. 正确分析: C_A = c[[0,2]] #先取出想要的行数据 C_A = C_A[:,[2,3]] #再取出要求的列数据 print(C_A) #输
这篇文章主要介绍了Python numpy数组转置与轴变换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 矩阵的转置 >>> import numpy as np >>> arr=np.arange(15).reshape((3,5)) >>> arr array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>&
在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误.这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值. numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素 使用范例: >>>import numpy as np >>> a = np.array([[np.nan,np.inf],\ ... [-np.nan,-np.inf]]) >>
想法由来 今天写代码过程中遇到一个需求,计算一个list中数值为1的元素的个数,其中这个list的元素数值不是为0就是为1. 一开始想到的是写个方法来计算: # 返回一个0,1数组中1的数量 def num_one(source_array): count = 0 for x in source_array: if x == 1: count += 1 return count 嗯好吧,然后觉得这是最low的方法了,就在想强大的python可不可以一行代码就做到以上的效果,然后发现真的可以. c
python中冒号实际上有两个意思:1.默认全部选择:2. 指定范围. 下面看例子 定义数组 X=array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]) 输出为5x4二维数组 第一种意思,默认全部选择: 如,X[:,0]就是取矩阵X的所有行的第0列的元素,X[:,1] 就是取所有行的第1列的元素 第二种意思,指定范围,注意这里含左不含右 如,X[:, m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右
这篇文章主要介绍了python numpy数组中的复制知识解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 vector = numpy.array([5, 10, 15, 20]) equal_to_ten_or_five = (vector == 10) | (vector == 5) vector[equal_to_ten_or_five] = 50 print(vector) 第一次看到这个的时候一脸懵逼,后来分析了下懂了下面记录下,
我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值.据我所知,最基础的方法是: shape = arr.shape result = np.zeros(shape) for x in range(0, shape[0]): for y in range(0, shape[1]): if arr[x, y] >= T: result[x, y] = 255 有更简洁和pythonic的方式来做到这一点吗? 有没有更快(可能不那么简洁和/或不那么pythonic)的
在实际使用numpy时,我们常常会使用numpy数组的-1维度和":"用以调用numpy数组中的元素.也经常因为数组的维度而感到困惑. 总体来说,":"用以表示当前维度的所有子模块 "-1"用以表示当前维度所有子模块最后一个,"负号用以表示从后往前数的元素" 测试代码 import numpy as np b = np.arange(start=0, stop=24, dtype=int) print('b.shape', b
本文实例讲述了python获取元素在数组中索引号的方法.分享给大家供大家参考.具体如下: 这里python是通过index方法获取索引号的 li = ['a', 'b', 'new', 'D', 'z', 'example', 'new', 'two', 'elements'] print li.index("example") print li.index("new") print li.index("z") print "c&quo
本文实例讲述了C#将hashtable值转换到数组中的方法.分享给大家供大家参考.具体如下: 此代码可以将hashtable中的值通过copyto转换到一个一维数组 var length = ht.Count; Guest[] array = new Guest[length]; ht.Values.CopyTo(array, 0); 其中ht为hashtable,其key为字符串,value为一个Guest类,通过此代码可以讲values的值全部放入 Guest[] 的数组中 希望本文所述对大
本文实例讲述了Python实现找出数组中第2大数字的方法.分享给大家供大家参考,具体如下: 题目比较简单直接看实现即可,具体的注释在代码中都有: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找出数组中第2大的数字 ''' def find_Second_large_num(num_list): ''''' 找出数组中第2大的数字 ''' #直接排序,输出倒数第二个数即可 tmp_list=sorted(num_lis
第一种算法思路: 第一步:随机出来一个数组的下标 第二步:判断下标对应的值是否等于被查找的值,是的话终止,已找到,否的话转第三步. 第三步:判断是否随机完数组的所有下标,是的话终止,没找到,否的话转第一步. 代码如下: #本程序的功能是在字典中查找存在某个值 import random di = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6} key = 2 di1 = {} while True: tmp = random.choice(di.keys()) #随机
-
Python列表将一维数据转换成为多维数据
2021-04-28 15:00:31x=[1,2,3,4,5,6,7,8,9] # 一维列表 y=[[1,2,3],[4,5,6],[7,8,9]] # 二维列表 z=[[[1,2],3],[[4,5],6],[[7,8],9]] # 三维列表 通过这个演示应该可以直观看出列表不同维数的区别 常用的转换方式有两种,一种是利用...先和大家说明一下维度转换的关系,直接用事例来演示
x=[1,2,3,4,5,6,7,8,9] # 一维列表 y=[[1,2,3],[4,5,6],[7,8,9]] # 二维列表 z=[[[1,2],3],[[4,5],6],[[7,8],9]] # 三维列表
通过这个演示应该可以直观看出列表不同维数的区别
常用的转换方式有两种,一种是利用numpy转成数组之后利用numpy的工具进行转换,另一种是通过列表的叠加进行
第一种 利用numpy
import numpy as np x = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 一维列表 Y = np.array(x).reshape(3, 3) print(Y.reshape(3, 3))
运行结果:
利用reshape方法进行维度变换简单方便,但是只能变换规整维度,例如上一个栗子中将1*9转为3*3,而无法自定义各个维度
第二种 叠加法
s = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 一维列表 # 这里按照第一个例子的三维列表进行转换,维度为3*(2+1) x = 2 # 第三维的维度 y = 2 # 第二维的维度 z = 3 # 第一维的维度 a = [] # 存放第三维数据 b = [] # 存放第二维数据 c = [] # 存放第一维数据 # 列表的数进行循环 for i in s: if len(a) < x: # 如果第三维满了,进入第二维 a.append(i) continue if len(b) < y: # 如果第二维满了,进入第一维 b.append(a) a = [] b.append(i) else: continue if len(c) < z: # 如果第一维满了,结束 c.append(b) b = [] else: continue print(c)
运行结果:
-
基于Python的数据可视化:从一维到多维
2019-10-12 10:43:39二、一维数据可视化 三、二维数据可视化 四、多维数据可视化 五、参考资料 一、iris数据集介绍 iris数据集有150个观测值和5个变量,分别是sepal length、sepal width、petal length、petal width、species,其中... -
python实现将一维列表转换为多维列表(numpy+reshape)
2020-12-04 20:34:48python实现将一维列表转换为多维列表(numpy+reshape)如题,我们直接使用numpy#!D:/workplace/python# -*- coding: utf-8 -*-# @File : numpy_reshape.py# @Author: WangYe# @Date : 2018/7/23# @Software: PyCharm... -
多维数组的运算
2021-01-06 16:52:26在上面的例子中,A 是一维数组,由 4 个元素组成。这里的 A.shape 的结果是个元组。这是因为一维数组的情况下也要返回和多维数组的情况下一致的结果。例如:二维数组时返回的元组(4,3),三维数组返回的元组(4,3,2... -
数组(一维、二维、多维)与指针的关系与区别总结
2018-06-18 23:06:34数组用于同种数据类型的存储,常规的数组选取的是一块连续内存空间来存储同种类型的数据。 1、 静态数组静态数组是在声明时已经确定子数组大小的数组,即数组元素的个数固定不变。在编译期间在栈中分配好内存的... -
数组、一维数组、二维数组、多维数组及其应用示例
2010-04-16 13:49:04介绍了数组、一维数组、二维数组、多维数组及其应用示例 -
LSTM多维预测数据|python
2021-10-06 11:31:15利用LSTM循环神经网络对多维数据进行预测,先对数据进行归一化处理,划分为训练集、测试集,用4个参数预测一个参数值 -
实现把多维数组转为一维数组的几种方式
2019-10-04 00:53:48该例子中,tempArr是一个多维数组,使用join将其转为字符串,在使用split方法转换为一维数组。 缺点: 如果数组中的各个项是number,将不可避免的转为字符串。 /** * 使用转字符串法 */ le... -
【最优化导论】一维搜索方法
2019-08-16 23:08:29其中包括黄金分割法、斐波那契数列法等,还将介绍在多维搜索算法中一维搜索方法所发挥的作用。 一维问题也就是指目标函数为一元单值函数f:R→Rf:\mathbb{R}\rightarrow \mathbb{R}f:R→R的优化问题,一维问题的求解... -
将任何多维矩阵展平为二维矩阵!:将任何多维矩阵转换为二维矩阵。 然后将其转换回其原始形式。-matlab开发
2021-06-01 11:36:59例子: 给定一个多维向量: >> vector_1 = rand(3,3,3,4,5,3); 将其展平为二维矩阵,保留对应于正确 xyz 顺序的第 3 维: >> [vector_1_f, fSeq] = fDim(vector_1,3); 将扁平矩阵转换回它的原始多维形式,仍然... -
二维数组及多维数组
2020-08-26 17:08:36多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 二维数组 int a[][] = new int[2][5]; 解析:以上二维数组a可以看成一个两行五列的数组。 多维数组 int... -
Numpy 将二维图像矩阵转换为一维向量的方法
2020-12-17 15:57:48Numpy 将二维图像矩阵转换为一维向量的方法以下的例子,将32x32的二维矩阵,装换成1x1024的向量def image2vector (filename):returnVect=zeros((1,1024))f=open(filename)for i in range (32):lineStr =fr.readline... -
一维卷积处理时间序列
2020-07-11 10:35:22一维卷积在以下几个方面能取得很好的效果: Analysis of a time series of sensor data. Analysis of signal data over a fixed-length period, for example, an audio recording. 一维卷积核二维卷积的区别 从上图... -
C语言数组入门之数组的声明与二维数组的模拟
2020-12-31 10:13:35C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当然也可以是另外一个数组。这样,要“仿真”出一个多维数组就不是一件难事。 对于一个... -
python统计多维数组的行数和列数实例
2021-01-20 05:19:27同样的如果是多维,每一维长度应该是 len(A[i]) 以上这篇python统计多维数组的行数和列数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:Python ... -
在OpenCV里图像数据与一维数组转换
2019-10-10 17:45:37通过读取文件之后,生成的图像数据一般是二维或三维数组,每个数组元素是8位字节大小。有时候从网络里接收到一串数据,它是字节顺序的,比如...通过下面的代码来构造一个bytearray数组,bytearray是可变的bytes数据... -
python 多维切片之冒号和三个点的用法介绍
2020-12-23 22:02:43一维切片就不说了,比较简单,先说下二维的,二维的理解了多维的就简单了。举个例子先建立一个5×5的二维数组 多维的切片是按照各个维度分别取 这里就分别输出第一维的2-3和第二维的3-5(索引从0开始)。 这里是... -
【Fortran】二维、多维数组及相应高级特性
2019-05-11 20:46:28总结了Fortran中二维及多维数组的应用方式。 -
绘制多维函数:评估多维函数; 并以交互方式在二维中进行可视化和动画处理。-matlab开发
2021-05-30 22:47:11用法: 绘图函数(fcn,LB,UB,varargin) 例子: 1.... % 绘制谢克尔函数,在第一维中保持恒定值 3.2,在最后一维中保持恒定值 6.8。 这里第二维和第三维的值被 LB 和 UB 的范围覆盖,如示例 2 中所做的 -
python一维向量和二维向量运算
2020-06-01 22:24:37一位向量a(n,)减去一位向量b(n,) 与 减去 c(n,1)的结果不同! a = np.array([1,2,3,4]) b = np.ones(4) c = b.reshape(-1,1) print(a-b) #[0. 1. 2. 3.] print(a-c) """ [[0. 1. 2. 3.] [0. 1. 2. 3.] [0. 1. 2.... -
二维数组数据变成一维数组
2020-06-18 16:18:35在处理多数组组合时,经常要拼接成一个数组,今天我们一起聊聊数组的转变,主要聊聊二维变一维吧 1、用es5的reduce和concat组合 var list = [ [111,222,3333,444], [555,666,777], [888], [999,1213] ] var ... -
多维矩阵乘法:简单函数在多维数组中执行快速矩阵乘法。-matlab开发
2021-05-30 13:32:20mmat(A,B) 执行矩阵乘法,其中二维矩阵是多维数组的一部分。 它相当于用于二维数组的内置 mtimes 函数的 Matlab。 然而,它自然地扩展了 mtimes 函数,其中两个输入数组可以具有任意数量的额外维度。 例如: A = [1... -
利用C语言的多级指针创建三维动态数组
2020-08-09 00:06:47利用C语言的多级指针创建了三维动态数组,并操纵数组.最后释放三级指针.这个例子展示了C语言指针功能的强大、灵活与“危险”。 -
js二维数组转一维数组方法
2019-03-12 15:28:00例子:[[0, 1], [2, 3], [4, 5]]转为[0, 1, 2, 3, 4, 5] 转自:https://www.cnblogs.com/EnSnail/p/9762764.html 方法一 利用es5的arr.reduce(callback[, initialValue])实现 var arr1 = [[0, 1], [2, 3], [4, ... -
Tensorflow进行多维矩阵的拆分与拼接实例
2020-12-20 16:48:24最近在使用tensorflow进行网络训练的时候,需要提取出别人训练好的卷积核的部分层的数据。...例子:创建一个三维的tensor,然后分别取出最后一个维度(注意:tensor支持与python中list相似的切片操作,可以 -
Lua基础---一维数组与多维数组
2017-07-18 11:51:58Lua语言中,数组和C还是有区别的,Lua的数组下标从1开始计数,而C语言的数组下标从0开始计数,我想这可能是... 接下来看1个例子: test7.lua--一维数组,数组的成员是字符串 array = {"Lua","Study"}; for i = 1 , 2 do