我可以从字典键数组创建一个numpy字典值数组吗?

时间:2019-11-23 16:23:48

标签: python arrays numpy dictionary

说我有一本字典:

    <input type="text" id="username"><br><br>
<input type="submit"  id="btn">

   <p id="demo"></p> 

<script>
    var btn=document.getElementById("btn");
    var user=document.getElementById("username");
    var names=[];

btn.onclick=function(){

    names.push(user.value);

    localStorage.setItem("names",JSON.stringify(names));

    var f =JSON.parse(localStorage.getItem("names")); 

    var x;

    var i;

        for(i=0;i<f.length;i++){

            x+=f[i]+"<br>";

        }

        document.getElementById("demo").innerHTML=x;

}
</script>

给出一个键的numpy数组**,例如d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} ,有一种简单的方法来创建相应值的numpy数组,例如['a' 'c' 'e']

**出于上下文原因,我更愿意输入/输出numpy数组。显然可以使用列表完成类似的操作:

[1 3 5]

但是我想知道是否有内置的方法可以在numpy中执行类似的操作。

2 个答案:

答案 0 :(得分:1)

您可以使用structured arraynp.in1d来做到这一点。

#include <stdio.h>

int main()
{
    int N, n;
    printf("Enter number of integers to be stored : ");
    scanf("%d", &N);
    int count[N];
    printf("\nEnter %d integers: \n", N);
    for(int n=0;n<N;n++)    
    {
      scanf("%d", &count[n]);
    }
    //Even and Odd Counter
    int even_counter=0, odd_counter=0;
    for(n=0;n<N;n++)
    {
        //even_counter
        if(count[n]%2==0)
        {
            even_counter++;
        }
        //odd_counter
        else
        {
            odd_counter++;
        }
    }
    printf("\nThere are %d even numbers in the set.", even_counter);
    printf("\nThere are %d odd numbers in the set.\n", odd_counter);


    //Sorting of Even and Odd
    int i=0;
    printf("\nEven numbers: \n");
    for(n=0;n<N;n++)
    {   
        if(count[n]%2==0)
        {
            printf("%d\n", count[n]);
        }
    }
    printf("\nOdd numbers: \n");
    for(n=0;n<N;n++)
    {
        if(count[n]%2==1)
        {
            printf("%d\n", count[n]);
        }
    }

    //Sum of Odd and Even Values

    //EvenSummation
    int even_lister[i], sumEven, odd_lister[i], sumOdd;
    for(n=0;n<N;n++)
    {   
        if(count[n]%2==0)
        {
            even_lister[i]=count[n];
            sumEven+=even_lister[i];
        }
        else //OddSummation      
        {
            int odd_lister[i], sumOdd, i=0;

            odd_lister[i]=count[n];
            sumOdd+=odd_lister[i];

        }
     }
     printf("\nSum of Odd Numbers is %d", sumOdd);
     printf("\nSum of Even Numbers is %d", sumEven);
}

答案 1 :(得分:1)

如果仅需要将numpy数组用作输入和输出,而又不坚持使用numpy function 来处理它们,则可以在列表结果上使用numpy.array()理解力:

import numpy as np

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
keys = np.array(['a', 'c', 'e'])
values = np.array([d[k] for k in keys])

print(values)