使用 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]
我想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]