使用 numpy logical 'and' 进行不同的广播

Using numpy logical 'and' for different broadcasting

我想return基于两个条件的元素名称;偶数质子数和奇数中子数。我尝试打印这两个测试,结果很好。但是,当我尝试使用 'and' 逻辑打印元素时,由于广播不同而发生错误。我不知道如何重塑它。帮帮我。

元素,质子和中子。

我已经将元素、质子和中子转换成数组。

输入;

even_odd = []

even_protons = elements[n_protons%2 == 0]
odd_neutrons = elements[n_neutrons%2 != 0]

print('Even protons =', even_protons)
print('Odd neutorns =', odd_neutrons)
    
even_odd = even_protons & odd_neutrons

输出;

 Even protons = ['Helium' 'Beryllium' 'Carbon' 'Oxygen' 'Neon' 'Magnesium' 'Silicon'
 'Sulfur' 'Argon' 'Calcium' 'Titanium' 'Chromium' 'Iron' 'Nickel' 'Zinc'
 'Germanium' 'Selenium' 'Krypton' 'Strontium' 'Zirconium' 'Molybdenum'
 'Ruthenium' 'Palladium' 'Cadmium' 'Tin' 'Tellurium' 'Xenon' 'Barium'
 'Cerium' 'Neodymium' 'Samarium' 'Gadolinium' 'Dysprosium' 'Erbium'
 'Ytterbium' 'Hafnium' 'Tungsten' 'Osmium' 'Platinum' 'Mercury' 'Lead'
 'Polonium' 'Radon' 'Radium' 'Thorium' 'Uranium' 'Plutonium' 'Curium'
 'Californium' 'Fermium' 'Nobelium' 'Rutherfordium' 'Seaborgium' 'Hassium'
 'Darmstadtium ' 'Copernicium ' 'Flerovium' 'Livermorium' 'Oganesson']

Odd neutorns = ['Beryllium' 'Nitrogen' 'Nickel' 'Copper' 'Zinc' 'Gallium' 'Germanium'
 'Selenium' 'Bromine' 'Zirconium' 'Technetium' 'Ruthenium' 'Silver' 'Tin'
 'Antimony' 'Xenon' 'Barium' 'Europium' 'Gadolinium' 'Dysprosium' 'Erbium'
 'Ytterbium' 'Rhenium' 'Iridium' 'Platinum' 'Mercury' 'Thallium' 'Lead'
 'Astatine' 'Curium' 'Californium' 'Einsteinium' 'Fermium' 'Mendelevium'
 'Nobelium' 'Lawrencium' 'Rutherfordium' 'Dubnium' 'Bohrium' 'Hassium'
 'Meitnerium' 'Darmstadtium ' 'Roentgenium ' 'Copernicium ' 'Nihonium'
 'Flerovium' 'Moscovium']
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-69-c2071791ebcb> in <module>
      7 print('Odd neutorns =', odd_neutrons)
      8 
----> 9 even_odd = even_protons & odd_neutrons
    
ValueError: operands could not be broadcast together with shapes (59,) (47,) 

我希望 even_odd 显示为;

even_odd = 'Beryllium' 'Nickel' 'Germanium' 'Selenium' 'Zirconium' 'Ruthenium' 'Tin' 'Xenon' 'Barium' 'Gadolinium' 'Dysprosium' 'Erbium' 'Ytterbium' 'Platinum' (cont..)

在索引之前将 & 应用于布尔测试:

cond1 = n_protons%2 == 0
cond2 = n_neutrons%2 != 0
elements[cond1&cond2]