85196


# 実現したいこと

Pythonの2次元配列の片方のリストに値を追加したいです。例えば、

[code]

    list1=[0.43,0.52,0.56,0.74,0.62]
    
[/code]

と配列が与えられている時に、配列から1つ要素を持ってきて、その要素を100倍した後2次元配列に入れたいのですが、この時片方には100倍した値で決まっていますが、もう片方は決まっていません。

[code]

    temporary = orbit[0]
    temporary2 = abs(temporary*100)
    list2[int(temporary2)][]=temporary #ここの[]の方は空でここに追加したい。
    
[/code]

例えば,

[code]

    temporary = 0.43
    temporary2 = abs(0.43*100)=43
    list2[43][]=temporary #ここの[]の方は空でここに追加したい
    
[/code]

となります。図に表すと  
[![配列list2](https://i.stack.imgur.com/gg1tR.png)](https://i.stack.imgur.com/gg1tR.png)

となります。numpyのappendを使おうとしましたが上手くいきません。ご教示のほどよろしくお願いいたします。


CC BY-SA 4.0
2021-12-17T06:14:20.530
85191
2021-12-20T03:08:56.553
2021-12-17T06:39:32.457
50545
50545
question
python python3 array
Pythonの2次元配列の片方のリストに値を追加したい。


行数が決まっていないとは言っても最大で `len(list1)` なのですから、以下の様にしてもよろしいかと思います。

[code]

    import numpy as np
    
    scale = 100
    list1 = [0.43, 0.52, 0.56, 0.74, 0.62]
    list2 = np.zeros((len(list1), scale))
    
    for i, v in enumerate(list1):
      list2[i, int(abs(v)*scale)] = v
    
[/code]


CC BY-SA 4.0
2021-12-17T08:02:56.433
85196
2021-12-17T08:02:56.433
47127
85191
answer


要素を逆にしたところ、望む結果が得られました。(scaleは出力の関係上1/10にしています。)

[code]

    import numpy as np
    
    scale = 10
    list1 = [0.43, 0.434, 0.432, 0.74, 0.62]
    list2 = np.zeros((scale,len(list1)))
    
    for i, v in enumerate(list1):
        list2[int(abs(v)*scale),i] = v
    
    for i in list2:
        print(i)
    
    [0. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0.]
    [0.43  0.434 0.432 0.    0.   ]
    [0. 0. 0. 0. 0.]
    [0.   0.   0.   0.   0.62]
    [0.   0.   0.   0.74 0.  ]
    [0. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0.]
    
[/code]


CC BY-SA 4.0
2021-12-20T03:08:56.553
85235
2021-12-20T03:08:56.553
50545
85191
answer