简体   繁体   English

np.dot 为 Dataframe(float64) 和 np.ndarray(fload64) 返回 nan

[英]np.dot returns nan for Dataframe(float64) and np.ndarray(fload64)

I have a squared dataframe containing over 505 rows and columns (a 505x505 matrix)我有一个平方的 dataframe 包含超过 505 行和列(505x505 矩阵)

which I need to dot multiply to an ndarray from numpy (505 items).我需要从 numpy(505 项) dot乘到一个 ndarray。

the problem is that the result is an ndarray with 505 items, full of nan .问题是结果是一个包含 505 个项目的 ndarray,充满了nan

I tried replicating it on a separate notebook, but I wasn't able to.我尝试在单独的笔记本上复制它,但我无法做到。

in

print('df ', df)
print('info ', df.info())
result = np.dot(df, np.random.rand(505))
print('result.shape: ', result.shape)
print('result ', result)

out出去

df               A       AAL       AAP      AAPL      ABBV       ABC      ABMD  \
A     0.093188  0.072021  0.048887  0.067503  0.047795  0.052311  0.051706   
AAL   0.072021  0.547093  0.099290  0.069475  0.045120  0.066275  0.065950   
AAP   0.048887  0.099290  0.143932  0.055590  0.043934  0.059230  0.041979   
AAPL  0.067503  0.069475  0.055590  0.140050  0.051688  0.054113  0.060444   
ABBV  0.047795  0.045120  0.043934  0.051688  0.096598  0.047673  0.032663   
...        ...       ...       ...       ...       ...       ...       ...   
YUM   0.042185  0.095983  0.058538  0.052228  0.036547  0.046676  0.031293   
ZBH   0.054474  0.127670  0.057043  0.054673  0.046718  0.054718  0.053090   
ZBRA  0.079731  0.100945  0.064364  0.091272  0.054140  0.062255  0.066586   
ZION  0.061233  0.176829  0.075915  0.048804  0.044935  0.066857  0.044151   
ZTS   0.060966  0.052413  0.054156  0.069211  0.047445  0.054443  0.041018   
 

          XRAY       XYL       YUM       ZBH      ZBRA      ZION       ZTS  
A     0.053152  0.064197  0.042185  0.054474  0.079731  0.061233  0.060966  
AAL   0.110541  0.125551  0.095983  0.127670  0.100945  0.176829  0.052413  
AAP   0.064716  0.071780  0.058538  0.057043  0.064364  0.075915  0.054156  
AAPL  0.047973  0.067265  0.052228  0.054673  0.091272  0.048804  0.069211  
ABBV  0.049469  0.043552  0.036547  0.046718  0.054140  0.044935  0.047445  
...        ...       ...       ...       ...       ...       ...       ...  
YUM   0.060310  0.059523  0.098728  0.069827  0.051222  0.057302  0.057192  
ZBH   0.084555  0.068429  0.069827  0.136291  0.070115  0.089688  0.058264  
ZBRA  0.068271  0.085070  0.051222  0.070115  0.185910  0.087744  0.069007  
ZION  0.099294  0.098861  0.057302  0.089688  0.087744  0.204927  0.040132  
ZTS   0.052646  0.057712  0.057192  0.058264  0.069007  0.040132  0.095019  

[505 rows x 505 columns]
<class 'pandas.core.frame.DataFrame'>
Index: 505 entries, A to ZTS
Columns: 505 entries, A to ZTS
dtypes: float64(505)
memory usage: 2.0+ MB
info  None
result.shape:  (505,)
result  [nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
 nan]

In this situation you should use DataFrame.dot在这种情况下,您应该使用DataFrame.dot

import pandas as pd;
import numpy as np
df = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five'])
other = pd.DataFrame(np.random.randn(5,5), columns=['one', 'two', 'three', 'four', 'five']).transpose()

Notice that the indices of the second DataFrame must match the rows of the first, then you can multiply them请注意,第二个DataFrame的索引必须与第一个的行匹配,然后您可以将它们相乘

df.dot(other)
# or
other.dot(df)

Remember that the matrix multiplication is not commutative.请记住,矩阵乘法不是可交换的。

If you do df.dot(other) it will return a dataframe with the indices of df and the columns of other , if you call it with a numpy array it will return a dataframe with columns counting [0,1,2,...]如果您执行df.dot(other) ,它将返回一个 dataframe ,其中包含 df 的索引和other的列,如果您使用 numpy 数组调用它,它将返回一个 Z6A8064B5DF47945,5,5,27.DZ 和计数。 .]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM