11

matplotlib でヒストグラムをプロットしようとしています。1 行の 2D 配列を変換する必要があります

[[1,2,3,4]] # shape is (1,4)

1D配列に

[1,2,3,4] # shape is (4,)

これどうやってするの?

4

5 に答える 5

12

列に直接インデックスを付けることができます:

>>> import numpy as np
>>> x2 = np.array([[1,2,3,4]])
>>> x2.shape
(1, 4)
>>> x1 = x2[0,:]
>>> x1
array([1, 2, 3, 4])
>>> x1.shape
(4,)

または、 `squeeze`を使用できます:

>>> xs = np.squeeze(x2)
>>> xs
array([1, 2, 3, 4])
>>> xs.shape
(4,)
于 2012-07-31T12:18:20.083 に答える
2

reshapeトリックを行います。

より具体的な関数もありflattenます。これは、あなたが望むことを正確に実行しているように見えます。

于 2012-07-31T12:13:53.487 に答える
2

mtrw が提供する答えは、実際にはこのような 1 行しかない配列のトリックを行いますが、2 次元の値を持つ 2 次元配列がある場合は、次のように変換できます。

a = np.array([[1,2,3],[4,5,6]])

ここから、 で配列の形状を見つけ、これnp.shapeとの積を見つけるとnp.product、要素の数が得られます。np.reshape()要素の総数の1つの長さに配列を再形成するために使用すると、常に機能するソリューションが得られます。

np.reshape(a, np.product(a.shape))
>>> array([1, 2, 3, 4, 5, 6])
于 2014-10-23T13:43:53.820 に答える
1

Use numpy.flat

import numpy as np
import matplotlib.pyplot as plt

a = np.array([[1,0,0,1],
              [2,0,1,0]])

plt.hist(a.flat, [0,1,2,3])

Histogram of Flattened Array

The flat property returns a 1D iterator over your 2D array. This method generalizes to any number of rows (or dimensions). For large arrays it can be much more efficient than making a flattened copy.

于 2013-12-24T15:47:50.860 に答える