小编Mat*_*ijn的帖子

NumPy数组索引2D矩阵

在处理相同的大数据时,我遇到了一些问题.但是现在,让我们假设我有一个填充零的NumPy数组

>>> x = np.zeros((3,3))
>>> x
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
Run Code Online (Sandbox Code Playgroud)

现在我想用特定值更改其中一些零.我已经给出了我想要改变的细胞的索引.

>>> y = np.array([[0,0],[1,1],[2,2]])
>>> y 
array([[0, 0],
       [1, 1],
       [2, 2]])
Run Code Online (Sandbox Code Playgroud)

我有一个包含所需(现在随机)数字的数组,如下所示

>>> z = np.array(np.random.rand(3))
>>> z
array([ 0.04988558,  0.87512891,  0.4288157 ])
Run Code Online (Sandbox Code Playgroud)

所以现在我想我可以做到以下几点:

>>> x[y] = z
Run Code Online (Sandbox Code Playgroud)

但是它比这更充满了整个阵列

>>> x
array([[ 0.04988558,  0.87512891,  0.4288157 ],
       [ 0.04988558,  0.87512891,  0.4288157 ],
       [ 0.04988558,  0.87512891,  0.4288157 ]])
Run Code Online (Sandbox Code Playgroud)

但我希望得到

>>> x
array([[ 0.04988558,           0,          0 ],
       [          0,  0.87512891,          0 ], …
Run Code Online (Sandbox Code Playgroud)

python numpy

5
推荐指数
1
解决办法
5565
查看次数

类型错误:“UndefinedType”对象不可调用

TypeError: 'UndefinedType' object is not callable运行以下 Altair 代码时,我收到了。

import altair as alt
from vega_datasets import data
cars = data.cars()

alt.Chart(cars).mark_point().encode(
    x=alt.X('Horsepower').axis(tickMinStep=50),
    y=alt.Y('Miles_per_Gallon').title('Miles per Gallon'),
    color='Origin',
    shape='Origin'
)
Run Code Online (Sandbox Code Playgroud)

altair

5
推荐指数
1
解决办法
1844
查看次数

如何在numpy中使用2d数组构造对角线数组?

使用np.diag我能够构建一个二维数组,其中输入一维数组在对角线上返回.但如果我有nD数组作为输入,如何做同样的事情?

这有效

foo = np.random.randint(2, size=(36))
print foo
print np.diag(foo)
[1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0]
[[1 0 0 ..., 0 0 0]
 [0 1 0 ..., 0 0 0]
 [0 0 1 ..., 0 0 0]
 ..., 
 [0 0 0 ..., 1 0 0]
 [0 0 0 …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

4
推荐指数
1
解决办法
916
查看次数

无法使用numpy将值分配给"双切片"

如何在numpy中执行以下操作?

  1. 选择包含超过50%0值的数组的所有行.
  2. n从满足1的所有行中选择第一行(比方说2)行.
  3. 做一些事情,并将修改过的行放在零数组的相同索引上,形状相同,形状为1.

以下结果导致数组中没有分配新值:

In [177]:    
a = np.array([[0,0,3],[4,5,6],[7,0,0],[10,11,12],[13,14,15]])
b = np.zeros_like(a)
a
Out[177]:    
array([[ 0,  0,  3],
       [ 4,  5,  6],
       [ 7,  0,  0],
       [10, 11, 12],
       [13, 14, 15]])

In [178]:
# select all rows containg note more than 50% 0 values
percent = np.sum(a == 0, axis=-1) / float(check.shape[1])
percent = percent >= 0.5
slice = np.invert(percent).nonzero()[0]

In [183]:
# select first two rows satisfying 'slice'
a[slice][0:2] 

Out[183]:    
array([[ 4,  5,  6],
       [10, 11, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy slice

4
推荐指数
1
解决办法
596
查看次数

使用chunksize保存到新的HDFStore中迭代HDFStore

我将所有数据都放入了HDFStore(是的!),但是如何将它从中获取...

我在我的HDFStore中保存了6个DataFrames作为frame_table.这些表中的每一个都如下所示,但长度不同(日期是朱利安日期).

>>> a = store.select('var1')
>>> a.head()
                      var1
x_coor y_coor date         
928    310    2006257   133
932    400    2006257   236
939    311    2006257   253
941    312    2006257   152
942    283    2006257    68
Run Code Online (Sandbox Code Playgroud)

然后我从我的所有表中选择日期为例如> 2006256的值.

>>> b = store.select_as_multiple(['var1','var2','var3','var4','var5','var6'], where=(pd.Term('date','>',date)), selector= 'var1')
>>> b.head()
                      var1   var2  var3  var4  var5  var6
x_coor y_coor date                                        
928    310    2006257   133  14987  7045    18   240   171
              2006273   136      0  7327    30   253   161
              2006289   125      0  -239    83   217   168
              2006305    95  14604  6786    13 …
Run Code Online (Sandbox Code Playgroud)

python pytables pandas

2
推荐指数
1
解决办法
1393
查看次数

在python中获得两个一维数组的乘积

在Matlab中非常简单,但我无法在Python中获得它.如何获得以下内容:

x=np.array([1,2,3])
y=np.array([4,5,6,7])

z=x.T*y
z= 
[[4,5,6,7],
[8,10,12,14],
[12,15,18,21]]
Run Code Online (Sandbox Code Playgroud)

如在

 x [4][5][6][7]
[1]
[2]
[3]
Run Code Online (Sandbox Code Playgroud)

python numpy

2
推荐指数
1
解决办法
95
查看次数

更新未屏蔽的numpy数组

我的问题是两个问题

首先,假设我有两个numpy数组,它们被部分屏蔽

array_old
[[-- -- -- --]
 [10 11 -- --]
 [12 14 -- --]
 [-- -- 17 --]]

array_update
[[--  5 -- --]
 [-- --  9 --]
 [-- 15  8 13]
 [-- -- 19 16]]
Run Code Online (Sandbox Code Playgroud)

如何创建一个新数组,其中所有非掩码值都被更新或修改,如:

array_new
[[--  5 -- --]
 [10 11  9 --]
 [12 15  8 13]
 [-- -- 19 16]]
Run Code Online (Sandbox Code Playgroud)

其次,如果可能的话,如何在3d numpy数组中进行上述操作?

更新:

对于第二部分,现在我使用for循环,使用@freidrichen方法如下:

array = np.ma.masked_equal([[[0, 0, 0, 0], [10, 11, 0, 0], [12, 14, 0, 0], [0, 0, 17, 0]],[[0, 5, 0, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

2
推荐指数
1
解决办法
371
查看次数

屏蔽Numpy数组的屏蔽会将屏蔽值更改为0

我屏蔽我的数组,其中值是nodata(-9999),计算轴上的平均值= 0然后取消屏蔽我的数据数组,但然后我的nodata值变为0,但现在如何区分"计算平均值0"和"nodata 0's".请参阅以下代码示例:

In [1]: import numpy.ma as ma
   ...: x = [[0.,1.,-9999.,3.,4.],[0.,2.,-9999,4.,5.]]
   ...: x 
Out[1]: [[0.0, 1.0, -9999.0, 3.0, 4.0], [0.0, 2.0, -9999, 4.0, 5.0]]

In [2]: mx = ma.masked_values(x, -9999.)
   ...: mx
Out[2]: 
masked_array(data =
 [[0.0 1.0 -- 3.0 4.0]
 [0.0 2.0 -- 4.0 5.0]],
             mask =
 [[False False  True False False]
 [False False  True False False]],
       fill_value = -9999.0)

In [3]: mean = mx.mean(axis=0)
   ...: mean
Out[3]: 
masked_array(data = [0.0 1.5 -- 3.5 4.5],
             mask = [False …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy masking

0
推荐指数
1
解决办法
5198
查看次数

使用python中的pandas,将年月日和小时的日期分解在单独的列中

阅读 Parse日期,当YYYYMMDD和HH在Python中使用pandas使用python pandas 在单独的列中解析CSV时,日期格式为Year,Day,Hour,Min,Sec

我仍然无法用年,月,日和小时的分隔列解析日期.我的数据看起来像这样(第0列是ID,第一个是年份,第二个是月份,第三个是日,第四个是小时,第五个是值)

50136   2011    1   1   21  9792    
50136   2011    1   1   22  9794    
50136   2011    1   1   23  9796    
50136   2011    1   1   0   9798    
50136   2011    1   1   1   9799    
50136   2011    1   1   2   9802
Run Code Online (Sandbox Code Playgroud)

我试过以下: df = pd.read_csv(file, parse_dates = {'date': [1, 2, 3, 4]}, , index_col='date')但是我得索引不是时间戳而是unicode(?)

In  [17]: print df.head()
Out [17]:
                 0     5
date                    
2011 1 1 21  50136  9792
2011 1 1 22  50136  9794
2011 …
Run Code Online (Sandbox Code Playgroud)

python csv timestamp date pandas

0
推荐指数
1
解决办法
4286
查看次数

如何组合两个numpy数组的数字

奇怪的问题,我可以连接两个数字,int(str(2)+str(3))但是如何将两个 numpy 数组连接起来?喜欢

x = np.array([[1,2,3],[4,5,6]])
y = np.array([[4,5,6],[1,2,3]])
z = np.xx(x,y)
print(z)

array([[14, 25, 36],
       [41, 52, 63]])
Run Code Online (Sandbox Code Playgroud)

python numpy

0
推荐指数
1
解决办法
170
查看次数

标签 统计

python ×9

numpy ×7

arrays ×4

pandas ×2

altair ×1

csv ×1

date ×1

masking ×1

pytables ×1

slice ×1

timestamp ×1